2017-09-14 135 views
1

我似乎無法找出這一個。我有MainActivity並創建了我想要導航到的SecondActivity和ThirdActivity。Android Studio - 導航活動

我在我的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); 

任何線索,爲什麼它不切換頁面/活動?

編輯:添加這些行,使其工作:

protected BottomNavigationView navigationView; 

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

感謝您的幫助!

+0

檢查是否當你點擊menuItem ,如果它正在調用正確的案例子句 – joao86

+0

我將日誌添加到每個案例,但它不會輸出任何內容到控制檯。 – 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創建一個文件夾。此文件用於BottomNavigationView

提供的MenuItems
<?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> 

現在可以設置監聽的Click事件OnNavigationItemSelectedListener和OnNavigationItemReselectedListener上的菜單項:

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); 

編輯 添加到您的onCreate()

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

文件結構全部包括您列出的XML文件。我添加了點擊監聽器代碼,但是我在最後兩行發現錯誤:BottomNavigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); – user8606632

+0

檢查我編輯的答案。 – Orvenito

+0

這仍然給我錯誤,不會驗證。什麼工作是在onCreate方法上面添加這個: protected BottomNavigationView navigationView; 而這個BottomNavigationView代碼之後: navigationView =(BottomNavigationView)findViewById(R.id.navigation); navigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); – user8606632