19

我試圖在通知欄中按通知時打開片段。我的應用程序的結構是:如何在android中按下通知時打開片段頁面

  • 與導航抽屜菜單
  • 一些片段被從菜單中打開一個基地活動

    b.setOnClickListener(new OnClickListener() { 
    
         @SuppressWarnings({ "deprecation", "static-access" }) 
         public void onClick(View v) { 
    
         w_nm=(NotificationManager) getActivity().getSystemService(getActivity().NOTIFICATION_SERVICE); 
    
         Notification notify=new Notification(R.drawable.notnificationlogo,waternoti,System.currentTimeMillis()); 
    
         Intent notificationIntent = new Intent(getActivity(), Abc.class); 
    
    
    
         PendingIntent pending=PendingIntent.getActivity(getActivity(), 0,notificationIntent, 0); 
    
    
         notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
           | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    
         notify.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; 
    
          notify.setLatestEventInfo(getActivity(),waternoti,waternoti1, pending); 
    
         w_nm.notify(0, notify); 
    

誰能告訴我如何與一個片段鏈接頁面(現在的代碼在擴展片段的類中)

+0

Broadcast Receiever? http://developer.android.com/reference/android/content/BroadcastReceiver.html – James 2014-10-28 12:43:29

+0

你能否詳細說明一下,我是新手機android – 2014-10-28 12:47:00

回答

24

您將需要像往常一樣開始基本活動,但添加一些extr關於將打開什麼菜單片段的意圖的信息。 在這裏你可以看到它是如何完成的: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); 
    } 
} 
+0

在這個應用程序中,我需要生成我自己的消息作爲通知,我保留按鈕在操作欄上的其中一個菜單選項中,我只使用了一個活動,其餘都是碎片 – 2014-10-28 13:00:34

+0

正如我所理解的,您需要用一些片段開始您的基本活動。片段類型必須依賴於通知類型。這是真的嗎? – Vito 2014-10-28 13:02:45

+0

不是所有的片段,只有幾個片段頁面應該取決於通知類型 – 2014-10-28 13:09:16

2

您還應該添加.commit();ft1.addToBackStack(null);,以便它不會重疊在prevoius上,並且如果您不會添加這個ft1.addToBackStack(null);上回您的應用程序將退出,以便根據自己的功能添加此

String menuFragment = getIntent().getStringExtra("menuFragment"); 

ft1 = getSupportFragmentManager().beginTransaction(); 

ft1.addToBackStack(null); 

ft1.replace(R.id.frame_container, favoritesFragment).commit(); 
4
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
      | Intent.FLAG_ACTIVITY_SINGLE_TOP) 

當你的意圖設置的標誌:FLAG_ACTIVITY_SINGLE_TOP「的onCreate()」將不會被調用的活動已創建的時候,你應該而是使用名爲「onNewIntent()」的方法接收參數。

相關問題