如何在android中按下通知时打开片段页面

我试图在通知栏中按通知时打开一个片段。 我的应用程序结构是:

谁能告诉我如何链接下一个片段页面(目前的代码是在扩展片段的类)

Solutions Collecting From Web of "如何在android中按下通知时打开片段页面"

您将需要像往常一样开始基本活动,但添加一些额外的信息,以打开什么菜单片段的意图。 在这里你可以看到它是如何完成的: https : //stackoverflow.com/a/8610916/1652236

这取决于您在活动的onCreate()方法中检索的额外信息,您将使用该方法来启动/加载片段。

看到这里例如如何使用片段: http : //www.tutorialspoint.com/android/android_fragments.htm http://developer.android.com/guide/components/fragments.html

它意图启动这个程序将是这样的:

 Intent notificationIntent = new Intent(getActivity(), Abc.class); notificationIntent.putExtra("menuFragment", "favoritesMenuItem"); 

并在你的基地活动:

 @Override protected void onCreate(final Bundle savedInstanceState) { String menuFragment = getIntent().getStringExtra("menuFragment"); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // If menuFragment is defined, then this activity was launched with a fragment selection if (menuFragment != null) { // Here we can decide what do to -- perhaps load other parameters from the intent extras such as IDs, etc if (menuFragment.equals("favoritesMenuItem")) { FavoritesFragment favoritesFragment = new FavoritesFragment(); fragmentTransaction.replace(android.R.id.content, favoritesFragment); } } else { // Activity was not launched with a menuFragment selected -- continue as if this activity was opened from a launcher (for example) StandardFragment standardFragment = new StandardFragment(); fragmentTransaction.replace(android.R.id.content, standardFragment); } } 
 notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP ) 

当你的意图设置Flags:FLAG_ACTIVITY_SINGLE_TOP时,创build活动时不会调用“onCreate()”,而应该在名为“onNewIntent()”的方法中接收参数。

你还应该加上.commit();ft1.addToBackStack(null); 所以它不会重叠prevoius之一,如果你不会广告这个ft1.addToBackStack(null); 在您的应用程序将退出,所以根据您的function添加此

 String menuFragment = getIntent().getStringExtra("menuFragment"); ft1 = getSupportFragmentManager().beginTransaction(); ft1.addToBackStack(null); ft1.replace(R.id.frame_container, favoritesFragment).commit();