2015-09-15 21 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情况下,你是不是返回一个值,而不是您通过掉落在默认情况下

相关问题