从外部意图返回后从Activity清除片段的最佳方法是什么(例如email / watsapp等) 从隐式意图调用(例如ACTION_SEND)返回后,我有一个我要清除的片段(从backstack清除)。我想清除片段,但我不想关闭活动。 我已经尝试了'getActivity()。onBackPressed()' - 在这种情况下,我的Activity出现在'email / sms'意图被调用之前。 我想从外部意图回来后清除这个片段。
答案 0 :(得分:1)
您可以在onActivityResult中尝试此代码:
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null) {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
答案 1 :(得分:0)
尝试在onactivityresult方法中获得任何回调,因为您正在使用startactivityforresult进行发送操作。
答案 2 :(得分:0)
我是这样做的。每当我触发对外部应用程序的意图时,我都会设置一个标志
private static final int REQUEST_INTENT_SENT = 1000;
private boolean intentSent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.send_intent).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivityForResult(sendIntent, REQUEST_INTENT_SENT);
intentSent = true;
}
});
}
@Override
protected void onResume() {
super.onResume();
if(intentSent){
intentSent = false;
//Clear your fragment here
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_INTENT_SENT && resultCode == Activity.RESULT_CANCELED){
intentSent = false;
}
}
答案 3 :(得分:0)
试试此代码
FragmentManager fragmentManager = getFragmentManager(); fragmentManager.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);