2015-09-15 3 views
0

У меня есть 2 действия, родительская активность начинается с детской деятельности. Когда мы находимся в Child Activity, пользователь закрывает его с помощью кнопки «Вверх» в меню и возвращается в родительскую активность.My onActivityResult() никогда не называется

Эфирные фрагменты кода:

Родитель (Main) Активность:

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 случае вы не возвращает значение, вместо того, чтобы вы проваливаясь в случае по умолчанию

Смежные вопросы