2016-10-21 3 views
0

Каков наилучший способ удалить фрагмент из Activity после возврата из внешнего намерения (например, email/watsapp и т. Д.) У меня есть фрагмент, который я хочу очистить (очистить из backstack) после возвращения из неявного намерения (например, ACTION_SEND). Я хочу очистить фрагмент, но я не хочу закрывать его. Я уже пробовал 'getActivity(). OnBackPressed()' - в этом случае моя активность появляется до того, как вызов электронной почты/sms будет вызван. Я хочу очистить этот фрагмент после возвращения из внешнего намерения.Как очистить фрагмент от активности после возвращения из другого приложения?

ответ

0

попробуйте, если вы получаете любые обратные вызовы в onactivityresult-методе, поскольку вы используете startactivityforresult для действия отправки.

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; 
    } 
} 
0

Попробуйте этот код

FragmentManager fragmentManager = getFragmentManager(); fragmentManager.popBackStack (null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

0

Вы можете попробовать этот код в onActivityResult:

Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); 
if(fragment != null) { 
    getSupportFragmentManager().beginTransaction().remove(fragment).commit(); 
} 
Смежные вопросы