设置后退按钮始终在活动以通知开始时转到父活动

时间:2018-03-10 02:33:48

标签: java android

当应用关闭并收到通知时,用户会点击该应用并打开特定用户的个人资料。 它具有父活动(UsersActivity),但在这种情况下,单击工具栏中的后退按钮时,应用程序将关闭。

当用户从UsersActivity转到个人资料活动时,

后退按钮正在按预期工作。

我希望它能够进行父活动,甚至应用程序也会以通知开始。 我怎么能这样做?

这是我的清单:

<activity
    android:name=".UsersActivity"
    android:parentActivityName=".MainActivity"
    >

</activity>
<activity
    android:name=".ProfileActivity"
    android:parentActivityName=".UsersActivity"
    >

这是ProfileActivity:

public class ProfileActivity extends AppCompatActivity {

    private Toolbar mToolbar;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);


        mToolbar = findViewById(R.id.profile_toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_gold_back);
        getSupportActionBar().setLogo(R.drawable.ic_logo_v);
        getSupportActionBar().setTitle(R.string.app_name); 
        getSupportActionBar().setSubtitle(R.string.profile_toolbar_title);

通知类:

public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {


    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        String notification_title = remoteMessage.getData().get("title");
        String notification_message = remoteMessage.getData().get("body");

        String click_action = remoteMessage.getData().get("click_action");

        String from_user_id = remoteMessage.getData().get("from_user_id");



        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentTitle(notification_title)
                        .setContentText(notification_message);


        Intent resultIntent = new Intent(click_action);
        resultIntent.putExtra("user_id", from_user_id);


        PendingIntent resultPendingIntent =
                PendingIntent.getActivity(
                        this,
                        0,
                        resultIntent,
                        PendingIntent.FLAG_UPDATE_CURRENT
                );

        mBuilder.setContentIntent(resultPendingIntent);




        int mNotificationId = (int) System.currentTimeMillis();

        NotificationManager mNotifyMgr =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        if (mNotifyMgr != null) {
            mNotifyMgr.notify(mNotificationId, mBuilder.build());
        }


    }
}

2 个答案:

答案 0 :(得分:0)

您的Activity中的onBackPressed()方法可能正在执行当前finish();的{​​{1}},并且后台没有其他活动,因此会关闭该应用。

要解决此问题,您始终可以通过UserActivity的意图返回MainActivity

如果用户打开通知并转到他们的个人资料,您可以在Activity中使用此

实施一种方法
ProfileActivity.class

同样在您的代码中,确保您在关闭活动时没有在活动中执行@Override public void onBackPressed() { startActivity(new Intent(this,MainActivity.class)); } ,因为它会从当前堆栈中消失,然后再次进入您的应用程序,就像我说的那样,您将关闭应用程序,因为背景中没有活动。

答案 1 :(得分:0)

{{1}}