如何使用 onbackpressed 退出应用程序?

how to exit application using onbackpressed?

我的项目中有两个活动。我在第一个 activity 中设置了 intent-filter。现在我的第一个 activity 中有一个按钮,点击它之后将重定向到第二个 activity..我在第二个 activity 的 onbackpress 中添加了一些代码以关闭应用程序,但它没有关闭应用程序而是转到第一个 activity..can any告诉我哪里错了..

public class First extends ActionBarActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn=(Button)findViewById(R.id.first);
    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent=new Intent(First.this,Second.class);
            startActivity(intent);

        }
    });
}

SecondActivity.java

public class Second extends Activity{


private Button btns;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.second);
    btns=(Button)findViewById(R.id.secs);
}

void Showtoast(String message) {
Toast.makeText(Second.this, message, Toast.LENGTH_LONG).show();}
private Boolean exit = false;

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    if (exit) 
    {
        finish(); // finish activity
    } 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);

    }
}

清单

  <?xml version="1.0" encoding="utf-8"?>
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.close_app_example"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".First"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="Second"></activity>
</application>

当我点击后退按钮时它显示第一页而不是关闭应用查看图片

第一个完成 activity 当你移动到第二个 activity。

使用

        Intent intent=new Intent(First.this,Second.class);
        finish()
        startActivity(intent);

如果您在开始 Second 后不需要 First 那么您将完成 First

public class First extends ActionBarActivity {

private Button btn;

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

    btn=(Button)findViewById(R.id.first);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
        Intent intent=new Intent(First.this,Second.class);
        startActivity(intent);
        finish();

    }
});

}

此外,我建议您阅读 Tasks and Back Stack 以了解它会怎样。


您需要先使用 startActivity 将当前上下文指向另一个 activity。之后你可以完成第一个 activity,然后继续下一个,这样当用户在第二个 Activity 中按下后退按钮时,它会关闭应用程序,将这段代码添加到你的 btn.onClickListener 在 First.java:

Intent intent = new Intent(this, Second.Class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish(); // Call once you redirect to Second activity