Android 从另一个应用程序返回后,如何从活动中清除片段?
从外部意图(如电子邮件/watsapp等)返回后,从活动中清除片段的最佳方法是什么 我有一个片段,我想在从隐式意图调用(例如ACTION_SEND)返回后清除(从backbackback中清除)。我想清除片段,但不想关闭活动。 我已经尝试了“getActivity().onBackPressed()”—在这种情况下,我的活动显示在调用“电子邮件/短信”之前。Android 从另一个应用程序返回后,如何从活动中清除片段?,android,android-fragments,android-intent,Android,Android Fragments,Android Intent,从外部意图(如电子邮件/watsapp等)返回后,从活动中清除片段的最佳方法是什么 我有一个片段,我想在从隐式意图调用(例如ACTION_SEND)返回后清除(从backbackback中清除)。我想清除片段,但不想关闭活动。 我已经尝试了“getActivity().onBackPressed()”—在这种情况下,我的活动显示在调用“电子邮件/短信”之前。 我想在从外部意图回来后清除这个片段 在使用startactivityforresult进行发送操作时,如果在onactivityresul
我想在从外部意图回来后清除这个片段 在使用startactivityforresult进行发送操作时,如果在onactivityresult方法中收到任何回调,请尝试 在使用startactivityforresult进行发送操作时,如果在onactivityresult方法中收到任何回调,请尝试 我是这样做的。每当我触发外部应用程序的意图时,我都会设置一个标志
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;
}
}
我是这样做的。每当我触发外部应用程序的意图时,我都会设置一个标志
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;
}
}
试试这个代码
FragmentManager FragmentManager=getFragmentManager();
fragmentManager.popBackStack(null,fragmentManager.POP_BACK_堆栈,包括在内) 试试这段代码
FragmentManager FragmentManager=getFragmentManager();
fragmentManager.popBackStack(null,fragmentManager.POP_BACK_堆栈,包括在内) 您可以在onActivityResult中尝试以下代码:
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null) {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
您可以在onActivityResult中尝试以下代码:
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null) {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}