在主页上使用onbackpressed退出应用程序,在其他情况下转到上一页

时间:2014-11-30 18:33:39

标签: android webview onbackpressed

我目前正在开发Android Webview应用。我使用以下代码退出我的应用。 问题是,通过使用此代码,我无法再回到上一页,因此它还不是我的想法。

目标:

我只想在按主页上的后退按钮时显示以下Toast留言。 当用户位于与主页不同的页面上时,按后退按钮应该返回上一页。

我怎么能这样做?

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

        }

    }

2 个答案:

答案 0 :(得分:0)

你必须有某种变量才能知道你在哪个页面。

private Boolean exit = false;
@Override
public void onBackPressed() {
     if(page != "homepage"){
          super.onBackPressed(); // Calls the Overriden Method 
     }
    else
    {
    if (exit)
        this.finish();
    else {
        Toast.makeText(this, "Press again to close the app.",
                Toast.LENGTH_SHORT).show();
        exit = true;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                exit = false;
            }
        }, 3 * 1000);

    }
  }

}

答案 1 :(得分:0)

如果您正在使用活动,请尝试在AndroidManifest.XML中声明其父活动 它还将在actionBar上创建backButton。

  <activity
        android:name=".MyActivity"
        android:label="@string/app_name"
        android:parentActivityName="com.projectname.homepage">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.projectname.homepage" />
    </activity>

在您的主页中声明此代码onBackPressed。

@Override
public void onBackPressed() {
    if (back_pressed + 2000 > System.currentTimeMillis()) {
        Intent intent = new Intent();
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        super.onBackPressed();
    } else
    Toast.makeText(this, "Press once again to exit!",
            Toast.LENGTH_SHORT).show();
    back_pressed = System.currentTimeMillis();
}