猿问

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

我已经制作了一个包含许多活动的应用程序,并且我在所有活动中都包含了一个底部导航栏。我用完成();在任何意图不出现任何内存泄漏问题之后,但是当我按下手机的后退按钮时,应用程序将关闭。我应该怎么办?


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

            }


        });


翻过高山走不出你
浏览 146回答 3
3回答

守着星空守着你

每箱拆下finish()开关。如果您想忽略后退按钮的点击,那么您可以在活动中添加此代码。@Overridepublic void onBackPressed() {   //Do anything if you wish}

侃侃尔雅

如果我正确理解您的问题,您希望用户能够返回以前的活动,而您的应用程序不会导致任何内存泄漏(通过一次又一次地启动相同的活动)解决方案:从每个案例中删除finish()onNavigationItemSelected转到您的清单文件并添加android:launchMode="singleInstance"到每个活动如 dcanh121 所说,Ovveride onBackPressed 使其在您首次启动的活动中不执行任何操作。如果你这样做,那么如果用户尝试打开之前已经打开的同一个活动,它将导致应用程序打开前一个活动而不是创建一个新活动..(阅读更多关于这个)因此你不会有任何内存泄漏问题:)

慕森王

由于您正在完成每个活动,因此在后台或后台中仍有 o 活动。所以应用程序关闭。您可以使用视图寻呼机为底部导航视图膨胀片段。这是谷歌材料设计指南的正确方法。切勿将活动用于底部导航视图。如果你继续你的活动,然后覆盖 activtiy 的 onBackpress 方法。
随时随地看视频慕课网APP

相关分类

Java
我要回答