如何在同一活动中来回移动

How to move back and forth in same Activity

提问人:Siva Ram 提问时间:11/19/2015 最后编辑:David WasserSiva Ram 更新时间:11/20/2015 访问量:139

问:

我在同一活动中来回移动时遇到问题。有可能这样做吗?

我正在使用 GCM 创建通知,在收到通知时,我正在使用 WakefulBroadcastReceiver 调用活动。我的要求是:收到第二个通知后,我的活动开始,屏幕上显示一个包含当前数据的新屏幕。当我单击“后退”按钮时,显示第一个通知的屏幕能够看到它。我是否可以返回第二个通知屏幕。 我有一个活动,但实例不同。

@Override
public void onReceive(Context context, Intent intent) {


    ComponentName comp = new ComponentName(context.getPackageName(),
            GCMNotificationIntentService.class.getName());
    startWakefulService(context, (intent.setComponent(comp)));
    setResultCode(Activity.RESULT_OK);
}

GCMNotificationIntentService 具有以下活动。

 Intent resultIntent = new Intent(this, GcmHomeActivity.class);
        resultIntent.putExtra("msg", msg);
        PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,
                resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

这是调用我的活动的 Intent,它显示通知消息

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    // Intent Message sent from Broadcast Receiver
    String str = getIntent().getStringExtra("msg");
    msgET = (TextView) findViewById(R.id.message);
        msgET.setText(str);

}

Android活动 Google-Cloud-Messaging 通知 Android-PendingIntent

评论

0赞 Andy 11/20/2015
由于它们是两个不同的活动,通过两个不同的通知加载(而不是活动 A 加载到活动 B),我认为您不能只是“返回”。但是您应该能够调用,它应该关闭当前一个,而前一个应该重新出现,因为它是一堆活动。finishActivity()
0赞 David Wasser 11/20/2015
通常,默认行为是您想要的,因此它应该已经像这样工作。请发布您的清单,也许您正在做一些奇怪的事情导致此问题。
0赞 Bob Snyder 11/20/2015
据我了解您的问题,该应用程序收到一条 GCM 消息并将其显示在 .接收到第二条 GCM 消息,这会导致实例 #1 进入后台,并创建并显示第二个实例。按“返回”按钮,这将弹出活动实例 #2 并显示实例 #1。您正在询问是否可以返回到实例 #2。在这种情况下,这是不可能的,因为 Back 在弹出活动时会破坏它。也许可以使用“最近的任务”屏幕来代替返回GcmHomeActivityGcmHomeActivityGcmHomeActivity
0赞 Siva Ram 11/26/2015
谢谢你的回复,#qbix 你说的没错,这是我想要的行为,你能详细说明一下如何完成最近的这个任务吗
0赞 Bob Snyder 11/30/2015
Siva:当你回复我的评论时,我没有收到通知,因为你用了#而不是@来表示我的用户名。此处介绍了“最近任务”或“概述”屏幕。API 21 中添加了一些可能有用的功能。当然,这并不是 Lollipop 之前设备的解决方案。

答: 暂无答案