2016-07-21 10 views
0

ナビゲーションをツールバーに追加したいと思います。私は、あるアクティビティの断片から別のアクティビティの特定の断片に移動する必要があります。あるアクティビティのフラグメントから別のアクティビティのフラグメントに移動するにはどうすればよいですか?

それは、すべてのオレンジのラインが新しいアクティビティまたはフラグメントにナビゲート意味し、少しのようになります。

enter image description here

私はOTHERACTIVITYからフラグメントAにフラグメントBから移動する方法を教えてください。

+0

フラグメントAとBはそれぞれの活動で画面全体を占有していますか?そして、これらの活動で示されている断片だけですか? – Marat

+0

コードを試しましたか? –

+0

イベントを試しましたか?/ – Eenvincible

答えて

1

を追加したカスタムツールバーのナビゲーションを表示する:Activity 1から

Fragment Aを保持し、あなたがしたいです直接FragmentBをActivityにロードする。

今、私はまずFragment Aのボタンを押してから、Activity Bに直接行くことができます。それが意味

その後、あなたは単にあなたが戻っナビゲーション(?私はあなたがupNavigationを意味すると考えている)を扱っているので、あなたは以下を上書きすることができ、すぐにあなたがActivity 2.

に到着するとFragment Bをロードすることができます。

しかし、あなたは活動2の正確なフラグメントをロードする必要がある場合は、あなたが何らかの形で知っておく必要があるため、はっきりと見る:

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

     case android.R.id.home: 
      Intent intent = new Intent(this, Activity2.class); 
      intent.putExtra("frag", "fragmentB"); 
      startActivity(intent); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 

} 

を使用すると、ツールバーの戻る矢印をクリックしたときに、見ることができるように、我々は合格私たちがロードしたいフラグメントを特定するという目的からの価値です。

次に、あなたのActivity2で、単にintent extraを取得し、スイッチまたはif statement実行します。ここから

@Override 
public void onResume(){ 
    super.onResume(); 

    Intent intent = getIntent(); 

    String frag = intent.getExtras().getString("frag"); 

    switch(frag){ 

    case "fragmentB": 
     //here you can set Fragment B to your activity as usual; 
     fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentB()).commit(); 
     break; 
    } 
} 

を、あなたの断片Bは、あなたが今の活動に2

をすることができます示していなければなりませんアクティビティ2の中で同じことを処理して、ユーザーがバックホームの矢印をクリックしたときにどこに行くかを決定します。

私はこれがアイデアを得るのに役立つことを願っています。

注:私はインターフェイスアプローチについて考えており、これはこの方法で簡単に行うことができるため、必要ではないことを認識しました。

+0

これを行うとエラーが発生します: –

+0

原因:java.lang.NullPointerException:仮想メソッド 'java.lang.String android.os.Bundle.getString(java.lang.String)を呼び出そうとしました。文字列) 'を返します。 @Engvincible。 Btw私は本当にあなたのアプリが好きです、私はプレイストアでそれらを見ていた! –

+0

ねえ、Tomに感謝します。私にこれを手伝ってもらいましょう。インテントが最初にonResumeの中でnullでないことを確認しなければなりません。私たちはあなたがより多くの助けが必要な場合にチャットすることができます – Eenvincible

-1

使用このコードをあなたのフラグメント

fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentC()).commit(); 

を変更するには、これらのステップを考えてみましょう

Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); 
    ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true) 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setHomeButtonEnabled(true); 
関連する問題