【问题标题】:Android: Get Intent despite calling finish() on the previous ActivityAndroid:尽管在前一个活动上调用了完成(),但仍获得意图
【发布时间】:2012-04-04 06:38:08
【问题描述】:

我的用例如下:

在我调用的活动 A 中:

startActivity(B);
finish();

现在在 Activity B 的 onCreate 中,我需要知道启动 B 的 Activity,所以我想知道我是否在 Activity B 的 onCreate(...) 中调用:

getIntent();

我什至能够获得启动 Activity B 的 Intent 还是 getIntent() 在那时已经返回 null 因为我在调用 startActivity(B) 后立即完成了 Activity A ?

【问题讨论】:

  • 你可以通过调用intent.putExtra("AvtiVityName","Activity A")来传递活动名称
  • 不值得一试吗?大声笑
  • @Nishant:谢谢,我会试一试
  • 但是你的 Activity A 在启动 Activity B 之后完成,所以 getIntent();总是给你从活动 A 发送的价值。试试吧。
  • @Snicolas 很好;我想知道一些关于它的背景信息:) 另外:我正在开发一个庞大的框架——所以如果我想尝试上面的方法,我必须做很多改变,看看它是否可以工作。所以我宁愿在尝试之前知道。

标签: android android-activity android-intent


【解决方案1】:

这里

Intent intent = new Intent(A.this, B.class); 
intent.putExtra("activityStarted", "A"); 

在活动 B 中

String started = getIntent().getExtras().getString("activityStarted");

【讨论】:

  • 与 OP 上的第一条评论相同,但最简单的解决方案。
【解决方案2】:

在第一个活动中,使用以下代码启动新活动并重新启动方法()以完成活动::

Intent intent = new Intent(ThisActivity.this, NextActivity.class); 
intent.putExtra("Key", "Value");
startActivity(intent);

@Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        finish();
    }

在第二个活动中::

String started = getIntent().getStringExtras("Key");

【讨论】:

  • 感谢您的回答 - 但是在 onRestart 中调用 finish() 的目的是什么?这不是很危险吗?
  • 这样做是因为您想完成当前活动。所以当你从活动中回来时我就完成了,这并不危险
  • 谢谢 Agarwal Shankar,它对我的​​菜单系统很有用
猜你喜欢
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 2014-07-24
  • 1970-01-01
  • 2019-07-09
  • 2014-10-22
相关资源
最近更新 更多