2012-06-25 22 views
13

は、私は私の主な活動上だと私は新しい活動アンドロイドでバックキーが押されたかどうかを確認しますか?

MainActivity > NewActivity 

を開始し、NewActivityから、私はそれがNewActivity後に表示されていた場合MainActivityは何かをしたいバックキー

MainActivity < NewActivity 

を押し言いますMainActivityが正常に実行されたとき(アプリケーションを最初に実行したときなど)は閉じられません。これが可能なら誰でも知っていますか?

答えて

8

アイデアのカップル:

  • それはNewActivityを発射したときにあなただけのMainActivityにフラグを設定することができます。
  • あなたはMainActivityからstartActivityForResultを呼び出して、あなたがMainActivity.onActivityResult()ときNewActivity仕上げで受け取る結果を、設定するNewActivityの手配をすることができます。
+0

ありがとう!私はstartActivityForResultを使用しました。 –

0

NewActivityを起動するときは、startActivityForResultを使用し、有効なrequestIdを使用する必要があります。このようなrequestIdonActivityResultNewActivity一度仕上げにあなたに戻って渡されます。

16
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     Log.d(this.getClass().getName(), "back button pressed"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@アップデート。 NewActivityが終了したときに通知を受けたい場合は、startActivityForResult(Intent、requestCode)で開始する必要があります。次に、MainActivityのonActivityResult()をオーバーライドする必要があります。ここでrequestcodeパラメータを確認し、リターンコードがサブミットコード(childActivityを開始したとき)と等しい場合は、ビジネスを行うためのコードを入力します。

int MYCODE=1000; 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Result OK.d. 
    if (requestCode == MYCODE) { 
     // do something good 
    } 
} 
+0

戻るボタンを押しただけで聞こえませんか? –

+0

戻るボタンだけを聞きたい場合は、最初にコードをスニップしてください。 –

6

NewActivityでonBackPressed()メソッドをオーバーライドすると、戻るボタンを押したときに検出されます。 MainActivityにそのことを通知するために、バンドルにブール値のフラグを送信して、MainActivityがNewActivityの後にその開始を検出するようにすることができます。 NewActivityで

:のonCreateでMainActivity(で

 @Override 
     public void onBackPressed() { 
       boolean fromNewActivity=true; 

     Intent mainIntent = new Intent(view.getContext(), MainActivity.class); 
     Bundle bundleObj = new Bundle(); 
     bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity)); 
     mainIntent.putExtras(bundleObj); 
     startActivityForResult(mainIntent, 0); 
      } 

)方法:

 Bundle extras = getIntent().getExtras(); 
     boolean fromNewActivity =Boolean.parseBoolean(extras.getString("fromNewActivity")); 

MainActivityがNewActivity後に開かれているかどうか今、あなたは確認することができます。

8

Iは、バックボタン最初の方法で活性のアクションバーに押し付け2つ目は、バックモバイルハードウェアボタンを検出するために使用されるか、活性ボタンを死滅さを検出するための以下の方法を試してください。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    super.onBackPressed(); 
} 
関連する問題