Android Studio - 导航活动
我似乎无法找出这一个。我有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);
感谢您的帮助!
万一你错过了什么,请确保你没有忘记的事:
在布局的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);
文件结构全部包括您列出的XML文件。我添加了点击监听器代码,但是我在最后两行发现错误:BottomNavigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); – user8606632
检查我编辑的答案。 – Orvenito
这仍然给我错误,不会验证。什么工作是在onCreate方法上面添加这个: protected BottomNavigationView navigationView; 而这个BottomNavigationView代码之后: navigationView =(BottomNavigationView)findViewById(R.id.navigation); navigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); – user8606632
检查是否当你点击menuItem ,如果它正在调用正确的案例子句 – joao86
我将日志添加到每个案例,但它不会输出任何内容到控制台。 – user8606632
然后,由于没有被调用,所以监听器出现问题。请把你的主要活动 – joao86