我有两个活动A和B.一个主机2片段A和B.我做的是从这个片段A,我开始活动B,在完成后我去活动A和 打开片段B.在进入活动A时,我看到片段A暂时不应该发生。这是我的代码 -
来自片段A -
Intent intent = new Intent(getActivity(), B.class);
intent.putExtra("hi, "bye);
getActivity().startActivityForResult(intent, "performaAction");
在活动B中 -
Intent i = new Intent();
i.putExtra("data", data);
setResult(resultId, i);
finish();
现在我去活动A,在活动A中,我打开片段B.在这个过程中,我看到片段A一段时间我不想要
在活动A中 -
@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode) {
case resultId:
new Handler().post(new Runnable() {
public void run() {
openFragmentB(); //Fragment transition
}
});
break;
default:
break;
}
}
答案 0 :(得分:1)
只需删除Handler
部分:
@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
switch (resultCode) {
case resultId:
openFragmentB(); //Fragment transition
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
说明:
您所看到的是由于您打电话切换片段"将来的某个时间",使用:
new Handler().post(new Runnable() {
public void run() {
openFragmentB();
}
});
这意味着,一旦完成了当前已经在同一个线程上执行的操作队列,您的系统就会打开该片段。
没有理由像这样切换片段,当前线程已经让你通过调用onActivityResult
中的代码来控制当时和那里发生的事情。