如何将 activity 重定向到片段?
How to redirect activity to fragment?
每当我打开我的应用程序时,它都会打开第一个片段,因为它需要..我要问的是..如果用户点击第二个项目..第二个片段将出现并且我有一个名为[=19=的文本视图..现在点击该文本视图后,它将重定向到下一个 activity..那个 activity 有按钮,所以当我点击那个按钮时,带有文本视图的片段 "second"应该出现..这就是我想要的..希望你能得到...
Fragment
s 在 Activity
中,你可以像这样在片段之间切换
getFragmentManager().beginTransaction()
.replace(R.id.content_frame,new YourFragment(),"fragment_tag")
.addToBackStack(null)
.commit();
如果你想从其他活动转到特定的 Fragment
(A 是第一个 activity 并且有一个像 B 的片段,C 是另一个 Activity)你应该通过 Bundle
到你的 Activity
//In C
Intent mIntent = new Intent(this, A.class);
Bundle extras = mIntent.getExtras();
extras.putString("Go_To_Fragment", "B");
现在在 A
中获取 bundle 并检查它是否等于 B 然后替换 B
另一种方法是将片段添加到后台堆栈,然后您可以通过按后退按钮(仅)转到前一个 Fragment
s,例如,如果您在 C
中按后退按钮,您将返回到B
(假设您从 B
调用 C
)
编辑1:
我认为你应该使用第二种方式。将所有片段存储在堆栈中,然后最后一个片段(如 B
)将存储在堆栈顶部。现在你可以像这样获取最后一个片段
getSupportFragmentManager().popBackStack();
或
FragmentManager manager = getSupportFragmentManager();
int count = manager.getBackStackEntryCount();
if(count>0){
Fragment mfragment = manager.getBackStackEntryAt(count-1);
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, mFragment);
ft.commit();
}
这会给你 B
每当我打开我的应用程序时,它都会打开第一个片段,因为它需要..我要问的是..如果用户点击第二个项目..第二个片段将出现并且我有一个名为[=19=的文本视图..现在点击该文本视图后,它将重定向到下一个 activity..那个 activity 有按钮,所以当我点击那个按钮时,带有文本视图的片段 "second"应该出现..这就是我想要的..希望你能得到...
Fragment
s 在 Activity
中,你可以像这样在片段之间切换
getFragmentManager().beginTransaction()
.replace(R.id.content_frame,new YourFragment(),"fragment_tag")
.addToBackStack(null)
.commit();
如果你想从其他活动转到特定的 Fragment
(A 是第一个 activity 并且有一个像 B 的片段,C 是另一个 Activity)你应该通过 Bundle
到你的 Activity
//In C
Intent mIntent = new Intent(this, A.class);
Bundle extras = mIntent.getExtras();
extras.putString("Go_To_Fragment", "B");
现在在 A
中获取 bundle 并检查它是否等于 B 然后替换 B
另一种方法是将片段添加到后台堆栈,然后您可以通过按后退按钮(仅)转到前一个 Fragment
s,例如,如果您在 C
中按后退按钮,您将返回到B
(假设您从 B
调用 C
)
编辑1:
我认为你应该使用第二种方式。将所有片段存储在堆栈中,然后最后一个片段(如 B
)将存储在堆栈顶部。现在你可以像这样获取最后一个片段
getSupportFragmentManager().popBackStack();
或
FragmentManager manager = getSupportFragmentManager();
int count = manager.getBackStackEntryCount();
if(count>0){
Fragment mfragment = manager.getBackStackEntryAt(count-1);
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, mFragment);
ft.commit();
}
这会给你 B