0

現在、Android Webview アプリを開発しています。次のコードを使用してアプリを終了しています。問題は、このコードを使用すると、前のページに戻ることができなくなるため、まだ考えていたものではありません。

ゴール:

ホームページで戻るボタンを押したときだけ、以下のトーストメッセージを表示したいです。ユーザーがホームページとは別のページにいる場合、戻るボタンを押すと前のページに戻るだけです。

どうすればそのようなことができますか?

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

        }

    }
4

2 に答える 2

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();
}
于 2014-11-30T18:55:48.717 に答える
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);

    }
  }

}
于 2014-11-30T18:38:54.337 に答える