2015-09-15 23 views
0

我有2個活動,父活動啓動子活動。當我們在Child Activity中時,用戶通過菜單中的「Up」按鈕關閉它,並返回到Parent Activity。我的onActivityResult()永遠不會被調用

基本代碼片斷:

父(主)的活動:

protected static final int TIMERCHOOSER_REQUEST = 1; 

開始的新活性(從菜單按鈕調用):

private void openTimerChooser() { 
     Intent intent = new Intent(this, TimerChooserActivity.class); 
     startActivityForResult(intent,TIMERCHOOSER_REQUEST); 
    } 

和用於取入結果:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode,resultCode,data); 

    Log.d("Main", "called onActivityResult"); //this and below is never executed 
    if (requestCode == TIMERCHOOSER_REQUEST) { 
     switch(resultCode) { 
      case RESULT_CANCELED: 
       Log.d("Main", "Intent result was canceled by TIMERCHOOSER"); 
      case RESULT_OK: 
       //code to handle data from TIMERCHOOSER_REQUEST 
       Log.d("Main", "accepted resultCode. value: "+resultCode); 
       String result = data.getStringExtra("result"); 
       Toast toast = Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT); 
       toast.show(); 
      default: 
       Log.d("Main", "invalid/unhandled resultCode? value: "+resultCode); 
     } 
    } 
    else 
     Log.d("Main", "invalid/unhandled requestCode? value: "+requestCode); 
} 

兒童活動( 「TimerChooserActivity」):

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    switch(id) { 
     case R.id.action_settings: 
      return true; 
     case android.R.id.home: 
      Log.d("TimerChooser", "finishing intent"); 
      Intent returnIntent = new Intent(); 
      returnIntent.putExtra("result", "Some result"); 
      /*if(result == "User activated textview") 
       setResult(RESULT_OK,returnIntent); 
      else 
       setResult(RESULT_CANCELED,returnIntent);*/ 
      setResult(RESULT_OK,returnIntent); 
      finish(); 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

你回到通過菜單/操作欄中的家用/向上按鈕父(MAINT)活動。這工作。但是onActivityResult()永遠不會被調用,不管我設置了什麼樣的結果。

我的清單中也沒有怪異的標籤。只是標準的東西:

android:allowBackup 
android:icon 
android:label 
android:theme 
android:name 
android:parentActivityName 
android:value 

這是怎麼回事?

+0

你是從的setResult()方法中設置的結果,當你回來的孩子的活動...? –

+0

在你的'android.R.id.home'的情況下,你沒有返回一個值,而是你正在進入默認情況。 – akodiakson

+0

回到兒童活動中,你的意思是什麼?無論我回到孩子多少次或主要活動,我都不會得到結果。主要活動也從未設定任何結果。我的代碼都是非常低級的東西,因爲我正在學習android。我可以發佈整個2個課程,但我認爲這有點矯枉過正。 –

回答

1

在你android.R.id.home情況下,你是不是返回一個值,而不是您通過掉落在默認情況下

相關問題