从ActionBarActivity打开片段

时间:2014-12-04 12:14:11

标签: android android-activity android-fragmentactivity

我有一个ActionBarDrawerToggle,其中包含许多片段,例如

RootFragment LoginFragment RegistrationFragment

来自RootFragment的

我导航到另一个活动,如

Intent activity = new Intent(getActivity().getApplicationContext(),TestActivity.class);
activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(activity);
getActivity().finish();

如何从TestActivity导航到LoginFragment

我正在使用以下代码:

startActivity(new Intent(TestActivity.this, RegistrationFragment.class));
                                            finish();

并且应用程序崩溃时出现以下消息:RegistrationFragment无法转换为android.app.Activity

有任何帮助吗?

2 个答案:

答案 0 :(得分:1)

startActivity方法用于启动Activity而非添加Fragment。要添加Fragment,您应该这样做:

      FragmentTransaction ft = getFragmentManager()
                        .beginTransaction();
      ft.replace(R.id.container, new RegistrationFragment());
      ft.commit();

和R.id.container是xml

中的片段容器ID

答案 1 :(得分:0)

您不能将Fragment类作为参数传递给startActivity方法。你必须在那里传递Activity类,当它被创建时,在刚启动的Activity中显示适当的Fragment。在你的情况下做:

startActivity(new Intent(TestActivity.this, ActionBarActivity.class));
finish();

然后在ActionBarActivity的onCreate方法中添加片段。

getFragmentManager().beginTransaction().add(containerViewId , RegistrationFragment).commit();