【发布时间】:2014-12-03 20:02:26
【问题描述】:
有谁知道 Android 中是否存在可以接受 Fragment 并简单显示它的 Activity?
这写起来非常容易,但我只是想知道Android是否提供了这样的帮助类。
谢谢!
【问题讨论】:
标签: android android-activity android-fragments fragment android-fragmentactivity
有谁知道 Android 中是否存在可以接受 Fragment 并简单显示它的 Activity?
这写起来非常容易,但我只是想知道Android是否提供了这样的帮助类。
谢谢!
【问题讨论】:
标签: android android-activity android-fragments fragment android-fragmentactivity
幸运的是它不存在。在系统中拥有这样的东西是没有意义的,你可以自己用 3-5 行代码来实现(如果你问的话,我个人也不喜欢 ListActivity)。
【讨论】:
是的,一个片段事务接受一个片段来显示它。
final FragmentManager fragManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragManager
.beginTransaction();
fragmentTransaction.add(myFragment, "xx"
+ REQUEST_CODE_PICK_ACCOUNT);
fragmentTransaction.commit();
下面的代码创建了一个片段,片段选择了一个用户。片段不需要 UI。
final FragmentManager fragManager = getActivity().getSupportFragmentManager();
Fragment f = new Fragment() {
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
startActivityForResult(AccountPicker.newChooseAccountIntent(null, null,
new String[]{"com.google"}, false, null, null, null, null), REQUEST_CODE_PICK_ACCOUNT);
}
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == REQUEST_CODE_PICK_ACCOUNT) {
String mEmail = "";
if (resultCode == Activity.RESULT_OK) {
if (data.hasExtra(AccountManager.KEY_ACCOUNT_NAME)) {
mEmail = data
.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
}
}
if (mActivity != null) {
//save the email.
MyPreferences.putString(mActivity, SettingApplication.USER_EMAIL, mEmail);
}
doUser();
}
super.onActivityResult(requestCode, resultCode, data);
fragManager.beginTransaction().remove(this).commit();
}
};
FragmentTransaction fragmentTransaction = fragManager
.beginTransaction();
fragmentTransaction.add(f, "xx"
+ REQUEST_CODE_PICK_ACCOUNT);
fragmentTransaction.commit();
【讨论】: