2017-09-04 1 views
1

Ich möchte den Status der Benachrichtigung in Abhängigkeit von Änderungen des Bestellstatus anzeigen. Ab sofort kann ich es anzeigen. Nun ist die nächste Aufgabe, wenn der Benutzer auf die Benachrichtigung klickt, ziehe ich es vor, dies zum Fragment der Spurreihenfolge zu bringen, wo der Benutzer seinen Auftragsstatus im Detail sehen kann.Benachrichtigung onClick to anderen Fragment

Hier ist mein Code:

public static void createNotification(FragmentActivity activity, boolean isLoggedIn, String selectedOrderId, String order_status, String status_desc) 
{ 
    NotificationCompat.Builder builder = 
      new NotificationCompat.Builder(activity) 
        .setSmallIcon(R.mipmap.ic_launcher) 
        .setContentTitle("Lugmah Order Status") 
        .setContentText("The Order Status of Order Id: "+selectedOrderId+ "is: "+status_desc) 
        .setDefaults(NotificationCompat.DEFAULT_SOUND) 
        .setAutoCancel(true); 
    int NOTIFICATION_ID = 12345; 


     Intent targetIntent = new Intent(activity, TrackOrderFragment.class); 
     targetIntent.putExtra("isTrackOrder", false); 
     Fragment fragment = new Fragment(); 
     Bundle bundle = new Bundle(); 

     TaskStackBuilder stackBuilder = TaskStackBuilder.create(activity); 

     if(isLoggedIn) 
     { 
      if(status_desc.equals("Rejected")) 
      { 
       targetIntent.putExtra("isLoggedIn", true); 
       targetIntent.putExtra("status_desc", status_desc); 
       fragment.setArguments(bundle); 
       bundle.putString("status_desc", status_desc); 
       bundle.putString("selectedOrderId", selectedOrderId); 
       targetIntent.putExtras(bundle); 
       stackBuilder.addParentStack(TrackOrderFragment.class); 
       stackBuilder.addNextIntent(targetIntent); 
      } 
     } 
     else 
     { 
      targetIntent.putExtra("isLoggedIn", false); 
     } 
     PendingIntent contentIntent = stackBuilder 
       .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT 
         | PendingIntent.FLAG_ONE_SHOT); 
     //PendingIntent contentIntent = PendingIntent.getActivity(activity, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     builder.setContentIntent(contentIntent); 

    NotificationManager nManager = (NotificationManager) activity.getSystemService(Context.NOTIFICATION_SERVICE); 
    nManager.notify(NOTIFICATION_ID, builder.build()); 
} 

Und ich möchte die Daten zu übergeben, die Status_desc und SelectedOrderId zwischen zwei Fragmente ist.

Um Daten zu erhalten, hier ist der Code, den ich schrieb.

Hier bekomme ich eine Benachrichtigung, wenn der Admin den Bestellstatus ändert. Ich kann jedoch nicht zu TrackOrderFragment.class onClick of Notification navigieren.

Hilfe wäre willkommen.

Antwort

2

können Sie versuchen, den Code unten auf die Schaltfläche

klicken
btn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Fragment fragment = new tasks(); 
     FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.content_frame, fragment); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.commit(); 
    } 
}); 
+0

Vielen Dank für Ihre Antwort. Die Sache hier ist, ich werde benachrichtigt. Wenn ich auf diese Benachrichtigung klicke, gehe ich zur nächsten Aktivität. – Jacky

0

Mai Intent targetIntent = new Intent(activity, TrackOrderActivity.class); statt Intent targetIntent = new Intent(activity, TrackOrderFragment.class); würden Sie helfen tun. Sie können eine Flagge als Absicht extra senden, um zu wissen, ob die Aktivität aus einer Benachrichtigung erstellt wird. Hängen Sie das Fragment mit dieser Aktivität an.

+0

Der Name des Fragments ist TrackOrderFragment.class. Ich glaube, es fehlt etwas, um Daten zwischen zwei Fragmenten zu übermitteln – Jacky

0

Ich habe hauptsächlich über diesen Codeblock gesprochen.

NotificationCompat.Builder builder = 
     new NotificationCompat.Builder(activity) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle("Lugmah Order Status") 
       .setContentText("The Order Status of Order Id: "+selectedOrderId+ "is: "+status_desc) 
       .setDefaults(NotificationCompat.DEFAULT_SOUND) 
       .setAutoCancel(true); 
int NOTIFICATION_ID = 12345; 


    Intent targetIntent = new Intent(activity, TrackOrderActivity.class); 
    targetIntent.putExtra("isTrackOrder", false); 
    Bundle bundle = new Bundle(); 
    if(isLoggedIn) 
    { 
     if(status_desc.equals("Rejected")) 
     { 
      targetIntent.putExtra("isFromNotification", true); 
      bundle.putString("status_desc", status_desc); 
      bundle.putString("sejectedOrderId", selectedOrderId); 
      targetIntent.putExtra("orderBundle",bundle); 
     } 
    } 
    else 
    { 
     targetIntent.putExtra("isLoggedIn", false); 
    } 

    //PendingIntent 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
     targetIntent, 0); 
    builder.setContentIntent(contentIntent); 

    NotificationManager nManager = (NotificationManager) activity.getSystemService(Context.NOTIFICATION_SERVICE); 
nManager.notify(NOTIFICATION_ID, builder.build()); 

Jetzt innerhalb der TrackOrderActivity onCreate-Methode dies tun.

setContentView(R.layout.activity_track_order); 
if(getIntent().getBooleanExtra("isFromNotification",true)){ 
     TrackOrderFragment fragment = new TrackOrderFragment(); 
    fragment.setArguments(getIntent().getBundleExtra("orderBundle")); 

    getSupportFragmentManager().beginTransaction(). 
     replace(R.id.container,fragment).commit(); 
} 

Jetzt auf Ihrem TrackOrderFragment wenn Sie anrufen getArguments() Ich glaube, Sie Ihre Bündel Daten erhalten.

Verwandte Themen