0

私は自分のアプリケーションを完全に完全に閉じていると仮定します。(これ以上アクティビティ スタックはありません)

ただし、通知が届き、クリックするとユーザーは 2 番目のアクティビティに移動します。

問題は、2 番目のアクティビティを最初のアクティビティ (ランチャー) に戻してから終了する方法です。

戻るボタンを押した場合に直接終了する代わりに (スタックがないため)!?

2 番目の行為に移動する通知。

 NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(R.drawable.ic_stat_social_person)
                        .setContentTitle("AIR° TRACKING MODE!")
                        .setStyle(new NotificationCompat.BigTextStyle()
                                .bigText(msg))
                        .setContentText(msg)
                        .setLights(Color.BLUE, 500, 500)
                        .setDefaults(Notification.DEFAULT_ALL)
                        .setOngoing(true);

        PendingIntent contentIntent = PendingIntent.getActivity(
                this,
                0,
                new Intent(this, Activity_Second.class).addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT),
                PendingIntent.FLAG_UPDATE_CURRENT);

        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(GM.NOTIFICATION_TRACKING_MODE, mBuilder.build());
    }
4

5 に答える 5

1

TaskStackBuilder が最良の選択です。そう思います...

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

    // Adds the back stack for the Intent (but not the Intent itself)
    stackBuilder.addParentStack(Activity_One.class);
    stackBuilder.addNextIntent(resultIntent);

そしてマニフェストで:

API < 16 で動作

 <activity android:name=".Activity_Second">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".Activity_One" />
    </activity>

API > 16 の場合

 <activity android:name=".Activity_Second"
        android:parentActivityName=".Activity_One" />

ごめん。TaskStackBuilder を使用するときは、PendingIntent を次のように編集することを忘れないでください。

     PendingIntent contentIntent =
        stackBuilder.getPendingIntent(
            0,
            PendingIntent.FLAG_UPDATE_CURRENT
        );
于 2014-10-17T10:00:31.927 に答える
1

これを試して..

onBackPressed()それをOverrideメソッドからActivity_Second.classtoに追加できますActivity_First.class

@Override
public void onBackPressed() {
    Intent ide = new Intent(this, Activity_First.class);
    ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(ide);

    finish();
}
于 2014-10-17T09:46:29.770 に答える
0

TaskStackBuilder複雑なアクティビティに最適 管理が簡単...方法さえわかれば!

通知からコードをナビゲートし、適切なバックスタックを追加します

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_social_person)
                    .setContentTitle("AIR° TRACKING MODE!")
                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(msg))
                    .setContentText(msg)
                    .setLights(Color.BLUE, 500, 500)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setOngoing(true);

    PendingIntent contentIntent = TaskStackBuilder.create(this)
            //addParentStack is destination class not its parent class
            //it will refer parent class from what you define in XML
            .addParentStack(Activity_TrackingMode.class)
            //and provide intent for destination class
            .addNextIntent(new Intent(this, Activity_TrackingMode.class))
            .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(GM.NOTIFICATION_TRACKING_MODE, mBuilder.build());

AndroidManifest の XML の例

    <activity android:name=".Activity_TrackingMode"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:parentActivityName=".Activity_Screen1">
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".Activity_Screen1" />
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

PS。> import android.support.v4.app.TaskStackBuilder;//16未満のAPIをサポートするため

于 2014-10-17T11:07:09.013 に答える
0

このコードを使用

@Override
public void onBackPressed() {
    Intent ide = new Intent(this, Activity_First.class);
    ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(ide);
    finish();
}
于 2014-10-17T10:03:14.930 に答える
0

TaskStackBuilderを使用します。

この文書を読んでください。

于 2014-10-17T09:48:33.700 に答える