要求用户在android中退出应用程序?

时间:2014-02-03 05:48:35

标签: android back

我的应用中有一系列活动。

如果用户正在进行家庭活动,则会出现“要求用户再次按下以退出。”

但是如果用户导航到第二或第三个活动并再次返回主页活动,我的代码将无法显示吐司。

我希望用户每次都在家庭活动时出现祝酒词。

我知道我的逻辑中存在一些错误。有人可以帮帮我吗。

这是后退代码

    @Override
    public void onBackPressed() {
    i++;
    if (i == 1) {
        Toast.makeText(HomeActivity.this, "Press back once more to exit.",
                Toast.LENGTH_SHORT).show();
    } else if(i>1) {
        finish();
        super.onBackPressed();
    }
}

7 个答案:

答案 0 :(得分:10)

这是我退回按钮退出的方式,它始终有效。它还可以通过3秒钟来处理无意的背压。等待双重按下的时间,如果用户在3秒内按下,则存在应用程序。

private boolean exit = false;
@Override
public void onBackPressed() {
    if (exit)
        Home.this.finish();
    else {
        Toast.makeText(this, "Press Back again to Exit.",
                Toast.LENGTH_SHORT).show();
        exit = true;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                exit = false;
            }
        }, 3 * 1000);

    }

}

答案 1 :(得分:5)

导航回i = 0时,您必须设置HomeActivity

所以,在HomeActivity.java i = 0内设OnResume()

喜欢这个

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    i = 0;
} 

答案 2 :(得分:1)

当您呼叫另一个Activity时,您需要在i=0中的每个startActivity(xyz)之前设置HomeActivity。我想我应该解决你的问题,如果它不只是让我知道。

答案 3 :(得分:1)

使用点心栏的简单好解决方案

LinearLayout mLayout;
Snackbar mSnackbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mLayout = findViewById(R.id.layout_main);
    mSnackbar = Snackbar.make(mLayout,"Press again to exit", Snackbar.LENGTH_SHORT);
}

@Override
public void onBackPressed() {
    if (mSnackbar.isShown()) {
        super.onBackPressed();
    } else {
        mSnackbar.show();
    }
}

答案 4 :(得分:0)

而是在AlertDialogBox的{​​{1}}方法中使用onBackPressed ..并在按下homeActivityfinish()活动Yes

  @Override
public void onBackPressed()
{
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Exit");
    builder.setMessage("Are You Sure?");

    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    finish();
            }
        });

    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

答案 5 :(得分:0)

我建议在这种情况下使用警告弹出窗口。 但在你的代码中它也可以如下工作:

int i = 1;


@Override
        public void onBackPressed() {       
            if (i == 1) {
                Toast.makeText(getApplicationContext(), "Press back once more to exit.",
                        Toast.LENGTH_SHORT).show();


            } else if(i>1) {
                finish();
            }
            i++;
        }

答案 6 :(得分:0)

逻辑:

  1. 创建一个初始值为0的变量

  2. 在显示toast后将值设置为1,以便如果再次按下该语句,则可以输入该值

  3. 创建一个具有指定延迟的处理程序,以便如果用户未在指定时再次按回,则将值更改为0,以防止进入IF条件。

  4. \      int x = 0;

     @Override
     public void onBackPressed() {
    
        if(x==1) {
            super.onBackPressed();
            return;
        }
        Toast.makeText(this,"Press Again to Exit!!",Toast.LENGTH_SHORT).show();
        x=1;
    
        android.os.Handler handler=new android.os.Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                x = 0;
            }
        }, 2000);  //2 sec delay
    
    }
    
相关问题