按下后退按钮时出现波涛汹涌的退出

时间:2016-08-16 07:11:15

标签: android activity-finish onbackpressed

我已经实现了我的应用程序,在按下后退按钮时退出。当我退出应用程序时,我通常会在应用程序正常退出之前显示最近的应用程序。可能导致此问题的原因是什么?这是我的代码。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button discover,why,enterprise,business,services,office,inquire,connect;
TextView offer;
Intent p;
private static long back_pressed_time;
private static long PERIOD = 2000;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    offer = (TextView)findViewById(R.id.offer);
    discover = (Button) findViewById(R.id.discover_us);
    why = (Button) findViewById(R.id.why_us);
    enterprise = (Button) findViewById(R.id.enterprise_soln);
    business = (Button) findViewById(R.id.business_soln);
    services = (Button) findViewById(R.id.services);
    office = (Button) findViewById(R.id.office_automation);
    inquire = (Button) findViewById(R.id.inquire);
    connect = (Button) findViewById(R.id.connect);
}

@Override
public void onClick(View v) {
    switch (v.getId())
    {
        case R.id.discover_us:
             p = new Intent(this,DiscoverUs.class);
            startActivity(p);
            break;
        case R.id.why_us:
            p = new Intent(this,WhyTechbiz.class);
            startActivity(p);
            break;
        case R.id.office_automation:
            p = new Intent(this,Office_Automation.class);
            startActivity(p);
            break;
        case R.id.services:
             p = new Intent(this,Services.class);
            startActivity(p);
            break;

        case R.id.enterprise_soln:
            p = new Intent(this,Enterprise_Soln.class);
            startActivity(p);
            break;
        case R.id.business_soln:
            p = new Intent(this,Business_Soln.class);
            startActivity(p);
            break;
        case R.id.inquire:
            p = new Intent(this,Inquire.class);
            startActivity(p);
            break;
        case R.id.connect:
            p = new Intent(this,Connect.class);
            startActivity(p);
            break;
    }
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}


@Override
public void onBackPressed() {
    if (back_pressed_time + PERIOD > System.currentTimeMillis()) {
    super.onBackPressed();
} else {
    back_pressed_time = System.currentTimeMillis();
    Toast.makeText(MainActivity.this, "Press once again to exit!", Toast.LENGTH_SHORT).show();
}
}

1 个答案:

答案 0 :(得分:0)

首先你应该初始化back_pressed_time并设置PERIOD = 3000最后一步这一行应该是上一个
back_pressed_time = System.currentTimeMillis(); 所以:

@Override
public void onBackPressed() {

back_pressed_time = System.currentTimeMillis();
    if (back_pressed_time + PERIOD > System.currentTimeMillis()) this.finish();
    else Toast.makeText(MainActivity.this, "Press once again to exit!", Toast.LENGTH_SHORT).show();

}