[英]get parent activity in fragment
我正在使用Facebook SDK,并且遇到问题。 FacebookLoginFragment正在覆盖我的登录活动。 实际上,我知道为什么会这样,但是我现在正在解决一个小时。
我需要在onCreateView方法中使用该视图,但是如果对其进行膨胀,则该视图只是对activity_login的覆盖。 我如何获得正确的视图而又不夸大它?
请参见下面的代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//get editText Views
editTextlogin = (EditText) findViewById(R.id.editText_login);
editTextpasswd = (EditText) findViewById(R.id.editText_passwd);
if (savedInstanceState == null) {
// add the fragment on initial activity setup
mainFragment = new FacebookLoginFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, mainFragment).commit();
} else {
// or set the fragment from restored state info
mainFragment = (FacebookLoginFragment) getSupportFragmentManager()
.findFragmentById(android.R.id.content);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(getActivity(), callback);
uiHelper.onCreate(savedInstanceState);
con = new FacebookConnection();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_login, container, false);
// The results of the authentication are returned to the activity, to
// get the Fragment to receive it
// call the setFragment() method
LoginButton authButton = (LoginButton) view
.findViewById(R.id.authButton);
authButton.setFragment(this);
if (Session.getActiveSession().isClosed()) {
authButton.setReadPermissions("user_status", "email", "publish_actions");
}
return view;
}
(我知道相对布局不是最佳实践,仅用于测试)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="at.ts_company.activity.Login" >
<View
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_centerInParent="true"
android:background="@color/primary_material_light" />
<EditText
android:id="@+id/editText_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="108dp"
android:ems="10"
android:hint="@string/login_loginname"
android:inputType="text" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText_passwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText_login"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="@string/login_passwd"
android:inputType="textPassword"/>
<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:contentDescription="@string/logo"
android:scaleType="fitCenter"
android:src="@drawable/final_logo" />
<TextView
android:id="@+id/textView_createAccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="68dp"
android:text="@string/login_createAccount"
android:clickable="true"
android:onClick="register"/>
<Button
android:id="@+id/button_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText_passwd"
android:layout_centerHorizontal="true"
android:drawableLeft="@drawable/arrow_right"
android:text="@string/login_loginbutton"
android:onClick="login"/>
<com.facebook.widget.LoginButton
android:id="@+id/authButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView_createAccount"
android:layout_alignLeft="@+id/editText_passwd"
android:layout_marginBottom="40dp" />
好吧,我必须回答我自己的问题。
这不是我想的那么容易,也不是我想到的解决方案。
我已经在Fragment(FacebookLoginFragment)中添加了功能,并且在Login.java中,我仅将其称为Fragment。
我必须在“登录名”中删除setContentView(R.layout.activity_login)
,然后将所有功能(除了if语句添加到Fragment中)添加。
我在Login.xml中为按钮定义了onClick方法,因此在Login.java中有一个方法login(View view)
,它仅调用fragment.login(View view)
也许有点晚了,但是为什么不通过静态实例访问它呢?
private static MyActivity Instance;
public static MyActivity getInstance() { return Instance; }
然后在onCreate
方法中,将活动分配给Instance Instance = this;
但是一定要检查返回的实例是否不为null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.