Android 从另一个应用程序返回后,如何从活动中清除片段?

Android 从另一个应用程序返回后,如何从活动中清除片段?,android,android-fragments,android-intent,Android,Android Fragments,Android Intent,从外部意图(如电子邮件/watsapp等)返回后,从活动中清除片段的最佳方法是什么 我有一个片段,我想在从隐式意图调用(例如ACTION_SEND)返回后清除(从backbackback中清除)。我想清除片段,但不想关闭活动。 我已经尝试了“getActivity().onBackPressed()”—在这种情况下,我的活动显示在调用“电子邮件/短信”之前。 我想在从外部意图回来后清除这个片段 在使用startactivityforresult进行发送操作时,如果在onactivityresul

从外部意图(如电子邮件/watsapp等)返回后,从活动中清除片段的最佳方法是什么 我有一个片段,我想在从隐式意图调用(例如ACTION_SEND)返回后清除(从backbackback中清除)。我想清除片段,但不想关闭活动。 我已经尝试了“getActivity().onBackPressed()”—在这种情况下,我的活动显示在调用“电子邮件/短信”之前。
我想在从外部意图回来后清除这个片段

在使用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();
}