【问题标题】:Helper Activity to display Fragment?帮助活动显示片段?
【发布时间】:2014-12-03 20:02:26
【问题描述】:

有谁知道 Android 中是否存在可以接受 Fragment 并简单显示它的 Activity?

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我同意你关于 ListActivity 的看法,我讨厌那个东西。
    【解决方案2】:

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

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

    【讨论】:

    • FragmentTransaction 不是 Activity。请仔细阅读我的问题。
    • 减 1 你应该很高兴有人甚至试图提供帮助。
    • 大声笑我没有暗示任何关于你的回应。我指出您的回答不适用于我的问题。你想试一试,随意 :) 你知道我也可以减 1 ;)
    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多