2017-12-20 15 views
0

アクティビティがBottomNavigationViewで、ナビゲーションバーのアイテムがクリックされたときに、Fragmentを使用してアイテムを表示します。私が持っている活動で下部のナビゲーションバーを別のアクティビティからフラグメント

:私のFragment1

private BottomNavigationView.OnNavigationItemSelectedListener navItemListener 
     = new BottomNavigationView.OnNavigationItemSelectedListener() { 

    @Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     switch (item.getItemId()) { 

      case R.id.item1: 
       getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment1()).commit(); 
       return true; 
      case R.id.item2: 
       getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment2()).commit(); 
       return true; 
      case R.id.item3: 
       getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment3()).commit(); 
       return true; 
     } 
     return false; 
    } 

}; 

を、私がクリックしたときに、Dialog(マニフェストのセットのテーマ)として動作する別のActivityを開始することを編集ボタンを持っています。その活動で私はitem1の断片を編集するためにTextViewButtonしか持っていません。

私は私の編集活動に

private class ButtonClicked implements View.OnClickListener { 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 

      case R.id.btnEdit: 

       UpdateText(); 
       getSupportFragmentManager().beginTransaction().detach(new Fragment1()).attach(new Fragment1()).commit(); 
       finish(); 
       break; 
      case R.id.btnCancel: 
       finish(); 
       break; 
     } 
    } 
} 

テキストの更新が、切り離しが動作していないよう添付して、私はまだ編集したを見て、私の下のナビゲーションバー上の別の項目をクリックする必要がありますテキスト。 Buttonをクリックすると、どうすればActivityが終了し、FragmentTextViewが既に更新されているのを確認できますか?

+0

は、なぜあなたは、新しく作成された 'Fragment'を取り外していますか? – kalabalik

答えて

1

編集アクティビティから新しいフラグメントを切り離して再接続するのではなく、アクティブな状態を維持していくつかの方法で通知するだけで済みます。

1)startActivityForResult()で編集アクティビティを開始し、終了する前に編集アクティビティで呼び出し元に結果を返します。 (呼び出し元は、フラグメントをカプセル化するアクティビティですが、コールバックはフラグメント内部に簡単に伝播できます)。

2)使用LocalBroadcastManagerあなたの編集活動からローカル通知を送信し、その通知

のための受信機としての発信者を登録する。しかし、他のソリューションが可能です

関連する問題