【问题标题】:Moving from one nest fragment to another从一个巢片段移动到另一个
【发布时间】:2014-05-13 17:20:35
【问题描述】:

我是 Android 新手,我正在玩 Fragments,我知道有很多例子可以了解 Fragments 的工作原理,不幸的是没有很多使用 Nested-Fragments 的例子(它们是在同一个Activity)。 这是我下面的代码,我遇到了 2 个问题:

  1. 在我添加辅助 Fragment 后,Root Fragment 可见。

  2. 两个Fragment 使用相同的设计,但是当我添加FragmentIi 时可以看到小部件的尺寸和屏幕上的位置不一样。

  3. 我需要一些关于如何正确操作的反馈。

谢谢!

public class LoginActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_login,
                    container, false);

            TextView tv = (TextView) rootView.findViewById(R.id.signUpText1);
            tv.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    FragmentTransaction ft = getFragmentManager()
                            .beginTransaction();
                    ft.replace(R.id.loginViewPlaceholder, new SignupFragment());
                    ft.commit();
                }
            });

            return rootView;
        }
    }

    public static class SignupFragment extends Fragment {

        public SignupFragment() {
            // TODO Auto-generated constructor stub
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            View signupView = inflater.inflate(R.layout.fragment_signup,
                    container, false);
            return signupView;
        }
    }

}

【问题讨论】:

  • 当您说Fragments 使用相同的“设计”时,您的意思是他们的xml 布局相同吗?
  • 您可能必须显示片段的 XML 布局(fragment_login.xml、fragment_signup.xml),以便任何人都能够诊断为什么它们在屏幕上看起来不同。

标签: android android-fragments fragment android-nested-fragment


【解决方案1】:

replace 方法将从指定容器中删除一个片段并将新的片段添加到其位置。在您的示例中,您似乎将PlaceholderFragment 添加到容器android.R.contentSignupFragment 到容器R.id.loginViewPlaceholder。如果您希望SignupFragment 替换PlaceholderFragment,则必须为两者使用相同的容器,或者您必须为您的事务单独调用remove()add()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多