【问题标题】:Return to main actuality after open activity B from notification通知开启活动B后回归主线
【发布时间】:2018-02-08 06:46:18
【问题描述】:

代码从 BroadcastReceiver 创建通知

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(G.context)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(G.context.getString(R.string.app_name))
                .setContentText("text")
                .setAutoCancel(true)
                .setColor(Color.MAGENTA);

        Intent intent = new Intent(G.context, B.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

        TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(G.context);
        taskStackBuilder.addParentStack(MainActivity.class);
        taskStackBuilder.addNextIntent(intent);
        PendingIntent resultPendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager = (NotificationManager) G.context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(2, mBuilder.build());

【问题讨论】:

    标签: android android-activity notifications broadcastreceiver


    【解决方案1】:

    如果您目前在MainActivity.java,然后单击通知并转到B Activity,只需在您的后按控制onClick() 方法中调用this.finish()onBackPressed()。如果您通过单击一个通知从任何地方打开您的B Activity,然后在您的B activity 中调用以下方法。

    @Override
    public void onBackPressed() {
       Intent i = new Intent(this, MainActivity.class);
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(i);
    }
    

    你可以这样做的其他方式

    你不需要做任何事情。默认情况下,当您从 Activity A 移动到 Activity B 时,Android 会将 Activity A 添加到 backstack。当你从Activity B按下返回按钮或完成它时,它会自动从backstack中恢复Activity A。

    如果您希望完成您的 Activity B,请在需要时以编程方式调用 Activity 的 finish() 方法。

    更多详情Check this

    【讨论】:

    • 谢谢 用这种方法,当我从app打开B活动并放回键按钮时,新创建的活动主要是不对的。我认为
    • 也可以通过调用简单的onBackPressed() 方法或this.finish() 来实现,但如果没有任何先前的活动堆栈可用,则应用程序将被关闭
    • 我们调用B活动程序时不应该出现这种情况,也就是你不应该从主活动一个创建实例有没有别的办法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多