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

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

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

  • 停止Android alarmmanager的setrepeat
  • 如何创建不同的pendingintent使filterEquals()返回false?
  • Android PendingIntent会带您进入已有的活动吗?
  • 停止Android报警pipe理器的setrepeat
  • 意图和未决意图之间的确切区别是什么?
  • 是否有可能使用相同的requestCode和不同的extras创build多个PendingIntents?
  • 如何为broadcastReceiver使用“goAsync”?
  • 何时使用IntentSender与PendingIntent?
  • 您将需要像往常一样开始基本活动,但添加一些额外的信息,以打开什么菜单片段的意图。 在这里你可以看到它是如何完成的: 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();