OnNavigationItemsSelected 侦听器一次又一次地启动相同的 activity
OnNavigationItemsSelected Listener is starting the same activity again and again
我是 Android 开发的新手,我正在尝试使用 bottomNavigationView 创建一个应用程序。我创建了一个单独的 class 来为不同的活动设置 bottomNavigationView,这样我就不必一次又一次地编写代码。但是,当我在 Android 设备中启动该应用程序时,它会再次启动欢迎 activity,无论我单击哪个项目都会启动欢迎 activity。这是我的 navigationHelperClass
public class BottomNavigationViewHelper {
private static final String TAG = "BottomNavigationViewHel";
public static void setUpNavigationView(BottomNavigationViewEx bottomNavigationViewEx){
Log.d(TAG, "setUpNavigationView: setting BottomNavigation");
bottomNavigationViewEx.enableAnimation(false);
bottomNavigationViewEx.enableItemShiftingMode(false);
bottomNavigationViewEx.enableShiftingMode(false);
bottomNavigationViewEx.setTextVisibility(false);
}
public static void enableNavigation(final Context context, final BottomNavigationViewEx viewEx){
viewEx.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.btnHome:
viewEx.setSelectedItemId(R.id.btnHome);
Intent intent = new Intent(context, Welcome.class);
context.startActivity(intent);
break;
case R.id.btnSearch:
Intent intent1 = new Intent(context, Chats.class);
context.startActivity(intent1);
break;
case R.id.btnPost:
Intent intent2 = new Intent(context, Posts.class);
context.startActivity(intent2);
break;
case R.id.btnFavourites:
Intent intent3 = new Intent(context, Favourites.class);
context.startActivity(intent3);
break;
case R.id.btnProfile:
Intent intent4 = new Intent(context, Profile.class);
context.startActivity(intent4);
break;
}
return false;
}
});
}
}
这是我的欢迎 activity 当我单击 bottomNavigationView 的任何项目时它开始。
public class 欢迎扩展 AppCompatActivity {
私有上下文 mCntext = Welcome.this;
private static final String TAG = "Welcome";
BottomNavigationViewEx bottomNav;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
Log.d(TAG, "onCreate: starting");
setupBottomNavigationView();
Menu menu = bottomNav.getMenu();
MenuItem menuItem = menu.getItem(0);
menuItem.setChecked(true);
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting bottomnavigationview");
bottomNav = findViewById(R.id.nav_bottom);
BottomNavigationViewHelper.setUpNavigationView(bottomNav);
BottomNavigationViewHelper.enableNavigation(mCntext, bottomNav);
}
}
这是我进行的活动之一,其余活动的代码也相同。这是个人资料活动。
public class Profile extends AppCompatActivity {
private Context mContext = Profile.this;
private static final String TAG = "Search";
BottomNavigationViewEx bottomNav;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
setupBottomNavigationView();
}
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting bottomnavigationview");
bottomNav = findViewById(R.id.nav_bottom);
BottomNavigationViewHelper.setUpNavigationView(bottomNav);
BottomNavigationViewHelper.enableNavigation(mContext, bottomNav);
Menu menu = bottomNav.getMenu();
MenuItem menuItem = menu.getItem(4);
menuItem.setChecked(true);
}
@Override
public void setTitle(CharSequence title) {
}
}
删除以下行:
viewEx.setSelectedItemId(R.id.btnHome);
在 onNavigationItemSelected
回调下的案例 case R.id.btnHome:
。
不要在活动中使用底部导航,而是使用片段。创建一个父 activity 来保存您的片段,然后在 onNavigationItemSelectListener 中更改片段,在这种情况下您不必管理底部导航状态和所选项目。你可以在这里查看如何更改片段
我是 Android 开发的新手,我正在尝试使用 bottomNavigationView 创建一个应用程序。我创建了一个单独的 class 来为不同的活动设置 bottomNavigationView,这样我就不必一次又一次地编写代码。但是,当我在 Android 设备中启动该应用程序时,它会再次启动欢迎 activity,无论我单击哪个项目都会启动欢迎 activity。这是我的 navigationHelperClass
public class BottomNavigationViewHelper {
private static final String TAG = "BottomNavigationViewHel";
public static void setUpNavigationView(BottomNavigationViewEx bottomNavigationViewEx){
Log.d(TAG, "setUpNavigationView: setting BottomNavigation");
bottomNavigationViewEx.enableAnimation(false);
bottomNavigationViewEx.enableItemShiftingMode(false);
bottomNavigationViewEx.enableShiftingMode(false);
bottomNavigationViewEx.setTextVisibility(false);
}
public static void enableNavigation(final Context context, final BottomNavigationViewEx viewEx){
viewEx.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.btnHome:
viewEx.setSelectedItemId(R.id.btnHome);
Intent intent = new Intent(context, Welcome.class);
context.startActivity(intent);
break;
case R.id.btnSearch:
Intent intent1 = new Intent(context, Chats.class);
context.startActivity(intent1);
break;
case R.id.btnPost:
Intent intent2 = new Intent(context, Posts.class);
context.startActivity(intent2);
break;
case R.id.btnFavourites:
Intent intent3 = new Intent(context, Favourites.class);
context.startActivity(intent3);
break;
case R.id.btnProfile:
Intent intent4 = new Intent(context, Profile.class);
context.startActivity(intent4);
break;
}
return false;
}
});
}
}
这是我的欢迎 activity 当我单击 bottomNavigationView 的任何项目时它开始。
public class 欢迎扩展 AppCompatActivity { 私有上下文 mCntext = Welcome.this;
private static final String TAG = "Welcome";
BottomNavigationViewEx bottomNav;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
Log.d(TAG, "onCreate: starting");
setupBottomNavigationView();
Menu menu = bottomNav.getMenu();
MenuItem menuItem = menu.getItem(0);
menuItem.setChecked(true);
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting bottomnavigationview");
bottomNav = findViewById(R.id.nav_bottom);
BottomNavigationViewHelper.setUpNavigationView(bottomNav);
BottomNavigationViewHelper.enableNavigation(mCntext, bottomNav);
}
}
这是我进行的活动之一,其余活动的代码也相同。这是个人资料活动。
public class Profile extends AppCompatActivity {
private Context mContext = Profile.this;
private static final String TAG = "Search";
BottomNavigationViewEx bottomNav;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
setupBottomNavigationView();
}
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting bottomnavigationview");
bottomNav = findViewById(R.id.nav_bottom);
BottomNavigationViewHelper.setUpNavigationView(bottomNav);
BottomNavigationViewHelper.enableNavigation(mContext, bottomNav);
Menu menu = bottomNav.getMenu();
MenuItem menuItem = menu.getItem(4);
menuItem.setChecked(true);
}
@Override
public void setTitle(CharSequence title) {
}
}
删除以下行:
viewEx.setSelectedItemId(R.id.btnHome);
在 onNavigationItemSelected
回调下的案例 case R.id.btnHome:
。
不要在活动中使用底部导航,而是使用片段。创建一个父 activity 来保存您的片段,然后在 onNavigationItemSelectListener 中更改片段,在这种情况下您不必管理底部导航状态和所选项目。你可以在这里查看如何更改片段