帮助活动显示片段?

时间:2014-12-03 20:02:26

标签: android android-activity android-fragments fragment android-fragmentactivity

有人知道Android中是否存在可以接受片段并只显示片段的活动吗?

这非常容易编写,但我只是想知道Android是否提供了这样的帮助类。

谢谢!

2 个答案:

答案 0 :(得分:1)

幸运的是它不存在。没有必要在系统中有这样的东西,你可以自己用3-5行代码实现(如果你问的话,我个人也不喜欢ListActivity)。

答案 1 :(得分:-1)

是的,片段事务接受片段来显示它。

    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();