2017-09-04 1 views
1

Je souhaite afficher l'état de la notification en fonction des changements d'état de la commande. A partir de maintenant, je suis capable de l'afficher. Maintenant, la tâche suivante est que lorsque l'utilisateur clique sur la notification, je préfère l'apporter au fragment de suivi de la commande où l'utilisateur peut voir le statut de sa commande en détail.Notification onCliquez sur un autre fragment

Voici mon 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()); 
} 

Et je voudrais transmettre les données qui Status_desc et SelectedOrderId entre deux fragments.

Pour recevoir des données, voici le code que j'ai écrit.

status_desc = getArguments().getString("status_desc"); 
     rejectedOrderId = getArguments().getString("rejectedOrderId"); 

Ici, je reçois une notification lorsque l'administrateur modifie l'état de la commande. Mais, je ne suis pas en mesure de naviguer vers TrackOrderFragment.class onClick de Notification.

L'aide serait appréciée.

Répondre

2

Vous pouvez essayer le code ci-dessous sur le bouton cliquez

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

Merci pour votre réponse. La chose ici est d'obtenir une notification. En cliquant sur cette notification, j'irais à l'activité suivante. – Jacky

0

mai faire Intent targetIntent = new Intent(activity, TrackOrderActivity.class); au lieu de Intent targetIntent = new Intent(activity, TrackOrderFragment.class); pourrait vous aider. Vous pouvez envoyer un indicateur en tant qu'intention supplémentaire pour savoir si l'activité est créée à partir de la notification. Attachez le fragment avec cette activité.

+0

Le nom du fragment est TrackOrderFragment.class. Je crois qu'il y a quelque chose qui manque pour transmettre des données entre deux fragments – Jacky

0

Je parlais principalement de ce bloc de code.

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()); 

Maintenant, à l'intérieur de la méthode TrackOrderActivity onCreate.

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(); 
} 

maintenant sur votre TrackOrderFragment si vous appelez GetArguments() Je pense que vous obtiendrez vos données paquet.