2016-10-21 6 views
0

外部の意図から返された後にアクティビティからフラグメントを消去する最も良い方法は何ですか(例:電子メール/ watsappなど) 暗黙の意図から戻ってきた後、クリアしたい(バックスタックからはっきりしない)フラグメントがあります。コール(例:ACTION_SEND)。私はフラグメントをクリアしたいが、私はそのアクティビティを閉じたくない。 私は既に 'getActivity()。onBackPressed()'を試しました - この場合、私のアクティビティは 'email/sms'インテントが呼び出される前に表示されます。 外部の意図から戻った後、このフラグメントをクリアしたいです。別のアプリケーションから戻った後、アクティビティからフラグメントをクリアするにはどうすればよいですか?

答えて

0

startactivityを送信アクションとして使用しているときに、onactivityresultメソッドでコールバックを取得しようとするとします。

0

ここで私はそれをしました。私は、外部アプリに意図をトリガするたびに、私は

FragmentManager fragmentManager = getFragmentManager()は、このコードを試し

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.popBackStack(null、FragmentManager.POP_BACK_STACK_INCLUSIVE);

0

あなたはonActivityResultにこのコードを試すことができます。

Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); 
if(fragment != null) { 
    getSupportFragmentManager().beginTransaction().remove(fragment).commit(); 
} 
関連する問題