2016-04-28 9 views
18

通知を作成するときにTaskStackBuilderを使用するのはなぜですか?私はそれの背後に論理を取得しません。なぜTaskStackBuilderを使用しますか?

説明できますか?

public void showText(final String text){ 
    Intent intent = new Intent (this, MainActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(MainActivity.class); 
    stackBuilder.addNextIntent(intent); 
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    Notification notification = new Notification.Builder(this) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentTitle(getString(R.string.app_name)) 
      .setAutoCancel(true) 
      .setPriority(Notification.PRIORITY_MAX) 
      .setDefaults(Notification.DEFAULT_VIBRATE) 
      .setContentIntent(pendingIntent) 
      .setContentText(text) 
      .build(); 
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(NOTIFICACTION_ID, notification); 
} 
+0

https://developer.android.com/training/implementing-navigation/temporal.html#CreateBackStack –

答えて

33

電子メール送信アプリがあり、その中に2つのアクティビティがあるとします。 1つはMainActivityで、電子メールリストを持ち、もう1つは電子メールを表示するためのものです(EmailViewActivity)。新しい電子メールを受信すると、ステータスバーに通知が表示されます。そして、ユーザーがその電子メールをクリックしたときにその電子メールを表示したい場合、そしてユーザーが戻るボタンをクリックした場合に電子メールを表示した後で、電子メールリストのアクティビティ(MainActivity)を表示します。このシナリオではTaskStackBuilderを使用できます。下記の例を参照してください。

public void showEmail(final String text){ 

     Intent intent = new Intent (this, MainActivity.class); 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     stackBuilder.addParentStack(MainActivity.class); 
     stackBuilder.addNextIntent(intent); 
     Intent intentEmailView = new Intent (this, EmailViewActivity.class); 
     intentEmailView.putExtra("EmailId","you can Pass emailId here"); 
     stackBuilder.addNextIntent(intentEmailView); 
     PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
     Notification notification = new Notification.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle(getString(R.string.app_name)) 
       .setAutoCancel(true) 
       .setPriority(Notification.PRIORITY_MAX) 
       .setDefaults(Notification.DEFAULT_VIBRATE) 
       .setContentIntent(pendingIntent) 
       .setContentText(text) 
       .build(); 
     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(NOTIFICACTION_ID, notification); 
    } 

ご理解いただけますようお願いいたします。

詳細は、URLの下には、次のとおりです。私たちは、活動が開始されるとき戻るボタンうまくを再生されますことを確認するTaskStackBuilderを使用 http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html http://developer.android.com/guide/components/tasks-and-back-stack.html http://www.programcreek.com/java-api-examples/index.php?api=android.app.TaskStackBuilder

3

TaskStackBuilderは、戻るボタンによって使用された活動の履歴にがアクセスできるようにします。基本的には、戻るボタンを押した後に別のアクティビティに移動する場合に使用します。

0

その他の回答では、保留中のインテントを使用して詳細アクティビティにユーザーを送信し、その後、戻るボタンを使用してメインアクティビティに戻ることを説明しました。このため、このis

Intent detailIntentForToday = new Intent(context, DetailActivity.class); 
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context); 
taskStackBuilder.addNextIntentWithParentStack(detailIntentForToday); 
PendingIntent resultPendingIntent = taskStackBuilder 
    .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

を設定する別の方法、あなたはまた、AndroidManifest.xmlDetailActivityため

android:parentActivityName=".MainActivity" 

を設定する必要があります。

関連する問題