简体   繁体   English

开始第二项活动,但失败回到第一项活动

[英]start second activity and fail to back to first activity

Assume that I completely quite my application. 假设我完全是我的申请。 (no more activity stack) (没有更多的活动堆栈)

However, the notification arrive and user will be navigate to second activity when click 但是,通知到达,并且用户在单击时将导航到第二个活动

The question is how can I make an second activity back to first activity (lancher) and then exit 问题是如何使第二个活动回到第一个活动(lancher),然后退出

instead of exit directly if press back button (because it doesn't have any stack)!? 而不是直接按返回按钮退出(因为它没有任何堆栈)!

NOTIFICATION WHICH NAVIGATE TO SECOND ACT. 导航到第二幕的通知。

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

Try this.. 尝试这个..

You can add that in onBackPressed() Override method from Activity_Second.class to Activity_First.class 您可以在onBackPressed()覆盖方法onBackPressed()Activity_Second.classActivity_First.class

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

    finish();
}

TaskStackBuilder is the best choice, I think so... 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);

and in the Manifest: 并在清单中:

work for API < 16 为API <16工作

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

for API > 16 对于API> 16

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

sorry. 抱歉。 when use TaskStackBuilder, remember to edit you PendingIntent like this: 使用TaskStackBuilder时,请记住像这样编辑PendingIntent:

     PendingIntent contentIntent =
        stackBuilder.getPendingIntent(
            0,
            PendingIntent.FLAG_UPDATE_CURRENT
        );

Use TaskStackBuilder : 使用TaskStackBuilder

Read this document . 阅读本文档

Use this code 使用此代码

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

TaskStackBuilder is the most appropriate for complex activity Easy to manage... if you know how ! TaskStackBuilder最适合复杂的活动易于管理...如果您知道怎么做!

Navigate Code from Notification & add proper back stack 从通知中浏览代码并添加适当的反向堆栈

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

Example of XML in AndroidManifest 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. PS。 > import android.support.v4.app.TaskStackBuilder; > import android.support.v4.app.TaskStackBuilder; //for support API below 16 //对于16以下的支持API

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM