问题描述
我有一个ActivityA,它以在意图中传递的ID开头。在另一个线程中,当接收到ID时确定弹出窗口。然后,您可以使用此ID打开ActivityA。打开ActivityA时,将使用您提交的ID。
但是,如果ActivityA已打开,那么ID是否不会用新提交的ID更新?
ActivityA:
@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);
感谢您的分析服务!
解决方法
一旦打开ActivityA,就会设置Extra值,并且这些值不可更改。
您确实有一些选择:
- 开始创建一个新的ActivityA副本-也许是更糟糕的解决方案,具体取决于设计,这不是我建议的,但是您可以做到。
- 由于您提到ID是由线程计算的,因此更好的解决方案是实现ActivityA实现的接口,并让线程调用接口方法,该接口方法又可以更新ID。请记住,如果由于更改ID而导致访问UI元素,则必须在主线程上执行此操作。
此链接应该可以帮助:android-how-to-send-interface-from-one-activity-to-another,这与我上面提到的原理相同。