2017-09-14 14 views
1

私はこれを理解できないようです。私はMainActivityを持っていて、SecondActivityとThirdActivityを作成しました。Androidスタジオ - ナビゲート活動

私は活動の間のナビゲートに私のMainActivityでBottomNavigationを使用しています:

public class MainActivity extends AppCompatActivity { 

protected BottomNavigationView navigationView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 
      = new BottomNavigationView.OnNavigationItemSelectedListener() { 

     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.navigation_menuItem1: 
        Intent intent = new Intent(MainActivity.this, MainActivity.class); 
        startActivity(intent); 
        return true; 
       case R.id.navigation_menuItem2: 
        Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
        startActivity(intent); 
        return true; 
       case R.id.navigation_menuItem3: 
        Intent intent = new Intent(MainActivity.this, ThirdActivity.class); 
        startActivity(intent); 
        return true; 
      } 
      return false; 
     } 

    }; 

navigationView = (BottomNavigationView) findViewById(R.id.navigation); 
navigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 

それはページ/活動を切り替えていない理由は、任意の手掛かり?

EDIT:それを動作させるためにこれらの行を追加しました:助けを

protected BottomNavigationView navigationView; 

navigationView = (BottomNavigationView) findViewById(R.id.navigation); 
navigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 

感謝を!あなたが何かを逃しただけの場合には

+0

menuItemをクリックすると正しいcase-clauseを呼び出す場合は、 – joao86

+0

それぞれのケースにLogsを追加しましたが、コンソールに何も出力しません。 – user8606632

+0

リスナーが呼び出されていないため、リスナーに問題があります。あなたのメインアクティビティのコードを入れてください。 – joao86

答えて

1

、あなたが何かを忘れていないことを確認してください:

レイアウトのXMLでBottomNavigationViewを作成します。

<android.support.design.widget.BottomNavigationView 
     android:id="@+id/navigation" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="0dp" 
     android:layout_marginStart="0dp" 
     android:background="?android:attr/windowBackground" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:menu="@menu/navigation" /> 

はここnavigation.xmlメニューリソース内のファイルを作成します。フォルダ。このファイルには、

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:id="@+id/navigation_menuItem1" 
     android:icon="@drawable/ic_home_black_24dp" 
     android:title="@string/menuItem1" /> 

    <item 
     android:id="@+id/navigation_menuItem2" 
     android:icon="@drawable/ic_dashboard_black_24dp" 
     android:title="@string/menuItem2" /> 

    <item 
     android:id="@+id/navigation_menuItem3" 
     android:icon="@drawable/ic_notifications_black_24dp" 
     android:title="@string/menuItem3" /> 


</menu> 

今すぐクリックしてイベントのリスナーを設定することができますBottomNavigationView

でのMenuItemを提供するために使用されるメニュー項目のOnNavigationItemSelectedListenerとOnNavigationItemReselectedListener: はあなたの onCreate()

にこれを追加

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

     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 

      switch (item.getItemId()) { 
       case R.id.navigation_menuItem1: 
        return true; 

       case R.id.navigation_menuItem2: 
        return true; 

       case R.id.navigation_menuItem3: 
        return true; 


      } 
      return true; 
     } 

    }; 

    private BottomNavigationView.OnNavigationItemReselectedListener mOnNavigationItemReselectedListener = new BottomNavigationView.OnNavigationItemReselectedListener() { 
     @Override 
     public void onNavigationItemReselected(@NonNull MenuItem item) { 

      switch (item.getItemId()) { 

       case R.id.navigation_menuItem1: 
        Log.d(TAG, "navigation_menuItem1 Reselected ==="); 
        break; 

       case R.id.navigation_menuItem2: 
        Log.d(TAG, "navigation_menuItem2 Reselected ==="); 
        break; 

       case R.id.navigation_menuItem3: 
        Log.d(TAG, "navigation_menuItem3 Reselected ==="); 
        break; 

      } 

     } 
    }; 

bottomNavigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 

bottomNavigationView.setOnNavigationItemReselectedListener(mOnNavigationItemReselectedListener); 

EDIT

BottomNavigationView bottomNavigationView; bottomNavigationView = findViewById(R.id.navigation); 
+0

リストされたXMLファイルを含むファイル構造がすべて設定されています。投稿されたクリックリスナーコードを追加しましたが、最後の2行にエラーが表示されます:BottomNavigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); – user8606632

+0

私の編集した答えをチェックしてください。 – Orvenito

+0

まだそれは私にエラーを与えた、検証しないだろう。これはonCreateメソッドの上にこれを追加したものです: protected BottomNavigationView navigationView; BottomNavigationViewコードの後: navigationView =(BottomNavigationView)findViewById(R.id.navigation); navigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); – user8606632

関連する問題