2011-12-19 8 views
1

私は、アプリケーションのコンテンツビューにオーバーレイビューを追加しました。戻るボタンにアクションを追加します。

デフォルトの戻るボタン機能を使用する前に、このオーバーレイビューを削除するために、戻るボタンにアクションを追加します。

この問題を解決するにはどうすればよいでしょうか?

ありがとうございます。

答えて

4

このシナリオに対する私のソリューションは、ユーザーがアプリケーション内のどこにいるのかをグローバルに示すことです。例えば

、この(ストレート私の現在のプロジェクトからの)考えてみます。

//... 
private boolean mInSettingsMode; 
//... 

// The button's onclick method. 
public void onSettingsButtonClick(View v) { 
    mInSettingsMode = true; 
    // Initialize view stuff. 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     if (mInSettingsMode) { 
      mInSettingsMode = false; 
      resetToNormalView(); 
      return true; 
     } else { 
      return super.onKeyDown(keyCode, event); 
     } 
    }  
    return super.onKeyDown(keyCode, event); 
} 
+0

クールな感謝、私はそれをやった。 :)私はメソッドを書き直しましたが、 'if(keyCode == KeyEvent.KEYCODE_BACK && mInSettingsMode){'だから 'return super.onKeyDown(keyCode、event);'ステートメントだけを持っています。先端に感謝します。 –

2

onKeyDown()メソッドを実装し、keyCodeが戻っているかどうかを確認する必要があります。はいの場合、あなたは何でもしたいことができます。

希望すると便利です。

+0

にonKeyDown ...は、その活動の方法とは? –

+0

それはあなたがオーバーライドする必要がありますアクティビティのメソッドです –

1

をあなたはonBackPressed()をオーバーライドする必要があります。

@Override 
public void onBackPressed() 
{ 
    // Add your code here 

    // Then call the parent constructor to have the default button functionality 
    super.onBackPressed(); 
} 
+0

これは残念ながらAndroid 2.0以降のみです。私はAndroid 4.0の出現でおそらく1.6をサポートすることを止めるのが最善だと思いますが。 –

+0

私は同意します.Android 1.6は現在、市場シェア(http://developer.android.com/resources/dashboard/platform-versions.html)のわずか1.3%を占めており、一般的にはそれをサポートしようとすると膨大な時間を費やしています。 – Dalmas

関連する問題