首页 > 解决方案 > 活动未使用新意图更新

问题描述

我有一个以意图中传递的 ID 开头的 ActivityA。在另一个线程中,在收到 ID 时确定弹出窗口。然后就可以用这个ID打开ActivityA了。打开 ActivityA 时,使用的是您提交的 ID。

但是如果ActivityA是打开的,ID不会更新为新提交的ID吗?

活动A:

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

@Override
protected void onResume() {
    super.onResume();
    getId();
}

private void getId(){
    long id = getIntent().getLongExtra("ID", 0L);
}

弹出窗口:

Intent intent = new Intent(this, ActivityA.class);
intent.putExtra("ID", newId);
startActivity(intent);

谢谢你的回答!

标签: androidandroid-intent

解决方案


一旦打开 ActivityA,额外的值就会被设置并且不可更改。

你确实有几个选择:

  1. 开始一个新的 ActivityA 副本 - 根据设计,这可能是更糟糕的解决方案,这不是我的建议,但你可以这样做。
  2. 由于您提到 ID 是由线程计算的,因此更好的解决方案是实现 ActivityA 实现的接口并让线程调用接口方法,该方法反过来可以更新 ID。请记住,如果由于更改 ID 导致访问 UI 元素,您必须在主线程上执行此操作。

这个链接应该有帮助: android-how-to-send-interface-from-one-activity-to-another,它与我上面提到的原理相同。


推荐阅读