我通过调用start活动开始了自己的新活动。但是在活动开始后,在方法onNewIntent
中,finish()
不会被调用!!
WebActivity.java
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
if (intent.getStringExtra("url") != null) {
Intent intent1 = new Intent(getBaseContext(), WebActivity.class);
intent1.putExtra("url",intent.getStringExtra("url"));
startActivity(intent1);
finish();
}
}
答案 0 :(得分:2)
<强> FYI 强>
首先调试,然后删除不需要的行
super.onNewIntent(intent);
setIntent(intent);
在意图
中致电 finish()Intent intent1 = new Intent(getBaseContext(), WebActivity.class);
intent1.putExtra("url",intent.getStringExtra("url"));
finish();
startActivity(intent1)
您也可以尝试 FLAG_ACTIVITY_NO_HISTORY。
如果设置,则新活动不会保留在历史堆栈中。立刻 用户离开它,活动结束。这可能 也可以使用noHistory属性设置。
答案 1 :(得分:2)
这是因为onNewIntent没有被调用!!!
我把它放在这个活动被调用的地方。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
然后它的作品就像一个魅力!!。
这是因为调用了新活动。而FLAG_ACTIVITY_SINGLE_TOP会使onNewIntent
被调用。此FLAG_ACTIVITY_SINGLE_TOP 不会启动新活动。
答案 2 :(得分:0)
我在Android中使用onNewIntent
进行搜索实施。当我在模拟器中使用键盘上的Go按钮时,我遇到了onNewIntent
未被调用的问题。我通过在onCreate
方法中放置处理意图的代码解决了这个问题。需要这样做以确保在启动活动的新实例时处理意图操作。
这就产生了一个问题,因为只要活动从之前的状态恢复,就会调用onCreate
。因此,即使发生方向改变,也会调用意图处理方法。
解决方案:使用if (savedInstanceState==null)
确定活动是从之前的状态恢复还是新搜索。