我已经创建了一个ButtomNavigationBar,每次我在栏中选择其他项目时,它都会启动另一个意图,因此,当我按下“返回”按钮时,它将经历所有已开始的活动。 因此,我发现每次选择其他项目时都使用finish()的临时解决方案,但是现在当我在该项目上单击两次时,应用程序完成了
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int i = item.getItemId();
if (i == R.id.navigation_home) {
item.setCheckable(false);
finish();
return true;
} else if (i == R.id.navigation_dashboard) {
Intent intent1 = new Intent(Home.this, ActivityOne.class);
startActivity(intent1);
item.setCheckable(true);
finish();
return true;
} else if (i == R.id.navigation_notifications) {
Intent intent2 = new Intent(Home.this, ActivityTwo.class);
startActivity(intent2);
item.setCheckable(true);
finish();
return true;
} else if (i == R.id.nav_slideshow) {
Intent intent3 = new Intent(Home.this, ActivityThree.class);
startActivity(intent3);
item.setCheckable(true);
finish();
return true;
}
return false;
}
});
答案 0 :(得分:0)
这可以帮助吗?
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
int lastItemId = -1;
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int i = item.getItemId();
if (i == R.id.navigation_home && lastItemId != i) {
lastItemId = i;
item.setCheckable(false);
finish();
return true;
} else if (i == R.id.navigation_dashboard && lastItemId != i) {
lastItemId = i;
Intent intent1 = new Intent(Home.this, ActivityOne.class);
startActivity(intent1);
item.setCheckable(true);
finish();
return true;
} else if (i == R.id.navigation_notifications && lastItemId != i) {
lastItemId = i;
Intent intent2 = new Intent(Home.this, ActivityTwo.class);
startActivity(intent2);
item.setCheckable(true);
finish();
return true;
} else if (i == R.id.nav_slideshow && lastItemId != i) {
lastItemId = i;
Intent intent3 = new Intent(Home.this, ActivityThree.class);
startActivity(intent3);
item.setCheckable(true);
finish();
return true;
}
return false;
}
});
答案 1 :(得分:0)
您可以在清单活动标签中使用android:noHistory="true"
,而不是每次手动完成活动
为活动设置android:noHistory="true"
时,该活动没有任何后退历史记录。这意味着,如果您退出此活动,则无法通过按“后退”按钮返回。与您使用finish();
您可以像这样在清单中设置
<application ... >
<activity android:name="com.example.myapp.MainActivity"
android:noHistory="true">
</activity>
</application>
请记住,仅将noHistory
设置为您不想通过回退来返回的活动