Java 从一个活动返回到另一个活动时可见的片段

Java 从一个活动返回到另一个活动时可见的片段,java,android,Java,Android,我有2个活动A和B。A承载2个片段A和B。我所做的是从这个片段A开始,我开始活动B,完成后我转到活动A和B 打开片段B。在进入活动A的过程中,我看到片段A有一秒钟是不应该发生的。这是我的密码- 从片段A- Intent intent = new Intent(getActivity(), B.class); intent.putExtra("hi, "bye); getActivity().startActivityForResult(intent, "performaAction"); 在活

我有2个活动A和B。A承载2个片段A和B。我所做的是从这个片段A开始,我开始活动B,完成后我转到活动A和B 打开片段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;
        }
    }
只需删除处理程序部分:

说明:

您所看到的是由于您在将来的某个时候使用以下命令调用以切换片段造成的:

new Handler().post(new Runnable() {
  public void run() {
    openFragmentB();
  }
});
这意味着您的系统将在完成当前操作队列后打开片段,该队列已经在同一线程上完成


应该没有理由这样切换片段,当前线程已经通过在onActivityResult中调用代码,让您可以控制此时此地发生的事情。

异步发布在这里有什么用途?您是否尝试过同步打开碎片?是的,但会导致崩溃。因此,onactivityresult中的片段转换需要在handlerSwitching中处理,因为片段本身不会导致崩溃。我建议您检查并修复该问题,然后同步切换片段。似乎在没有处理程序的情况下可以工作。。谢谢:
new Handler().post(new Runnable() {
  public void run() {
    openFragmentB();
  }
});