为了账号安全,请及时绑定邮箱和手机立即绑定

当我按下手机的后退按钮时,应用程序关闭

当我按下手机的后退按钮时,应用程序关闭

翻过高山走不出你 2022-10-20 15:08:58
我已经制作了一个包含许多活动的应用程序,并且我在所有活动中都包含了一个底部导航栏。我用完成();在任何意图不出现任何内存泄漏问题之后,但是当我按下手机的后退按钮时,应用程序将关闭。我应该怎么办?//an  intent of my app         Button btnsuita = (Button) findViewById(R.id.souita_btn);        btnsuita.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(HotelRooms.this, HotelRoomsSouita.class);                startActivity(intent);                finish();            }        });  //An Example of Bottom Navigation Bar        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.BottomNavView_bar);        BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);        Menu menu = bottomNavigationView.getMenu();        android.view.MenuItem menuItem = menu.getItem(0);        menuItem.setChecked(true);        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(@NonNull MenuItem item) {                switch (item.getItemId()) {                    case R.id.ic_home:                        Intent intent1 = new Intent(HotelRoomsSouita.this, MainMenu.class);                        startActivity(intent1);                        finish();                        break;                    case R.id.ic_back:                        Intent intent2 = new Intent(HotelRoomsSouita.this, HotelRooms.class);                        startActivity(intent2);                        finish();                        break;                    case R.id.ic_contact_us:                        Intent intent3 = new Intent(HotelRoomsSouita.this, Mail.class);                        startActivity(intent3);                        finish();                        break;                }                return false;            }        });
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

每箱拆下finish()开关。


如果您想忽略后退按钮的点击,那么您可以在活动中添加此代码。


@Override

public void onBackPressed() {

   //Do anything if you wish

}


查看完整回答
反对 回复 2022-10-20
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

如果我正确理解您的问题,您希望用户能够返回以前的活动,而您的应用程序不会导致任何内存泄漏(通过一次又一次地启动相同的活动)

解决方案:

  • 从每个案例中删除finish()onNavigationItemSelected

  • 转到您的清单文件并添加android:launchMode="singleInstance"到每个活动

  • 如 dcanh121 所说,Ovveride onBackPressed 使其在您首次启动的活动中不执行任何操作。

如果你这样做,那么如果用户尝试打开之前已经打开的同一个活动,它将导致应用程序打开前一个活动而不是创建一个新活动..(阅读更多关于这个

因此你不会有任何内存泄漏问题:)


查看完整回答
反对 回复 2022-10-20
?
慕森王

TA贡献1777条经验 获得超3个赞

由于您正在完成每个活动,因此在后台或后台中仍有 o 活动。所以应用程序关闭。

您可以使用视图寻呼机为底部导航视图膨胀片段。这是谷歌材料设计指南的正确方法。

切勿将活动用于底部导航视图。

如果你继续你的活动,然后覆盖 activtiy 的 onBackpress 方法。


查看完整回答
反对 回复 2022-10-20
  • 3 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号