2012-05-20 3 views
0

Существует что-то странное происходит при попытке setResult обратно к родительскому деятельности метод onActivityResult не выполняется, и мое приложение завершает здесь родительскийsetResult не вызывая родительскую активность назад

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      Log.d("MyAPP","Access Calendar"); 
      //Getting the token back from authorization process 
      accessToken = getIntent().getExtras().getString("token"); 
      // Setting up Calendar API Service 
      setupCalendarConnection(); 
      startActivityForResult(intent.setClass(this, CalendarTasks.class),REQUEST_CAL_TASK); 

    } 
@Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

      Log.d("MyAPP", "result arrived"); 

      if(requestCode==REQUEST_CAL_TASK){ 
       switch (resultCode){ 
        case CREATE_EVENT: 
         getUserCalendars(); 
         break; 
        case QUICKADD_EVENT: 
         getUserCalendars(); 
         startActivityForResult(intent.setClass(this, CalendarQuickAddActivity.class),REQUEST_CAL_ACT); 
         break; 
        case VIEW_EVENTS: 
         getUserCalendars(); 
         break; 
        case CREATE_CALENDAR: 
         getUserCalendars(); 
         break; 
        case EDIT_CALENDAR: 
         getUserCalendars(); 
         break; 
       } 
      } 

      super.onActivityResult(requestCode, resultCode, data); 
     } 

Вот ребенок деятельность

listView.setOnItemClickListener(new OnItemClickListener(){ 

      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       listIndex=position; 
       Log.d("MyAPP", ""+position); 

       switch (listIndex){ 
        case 0: 
         Log.d("MyAPP","case 0"+listIndex); 
         setResult(CREATE_EVENT); 
         finish(); 
         break; 
        case 1:{ 

         Log.d("MyAPP","case 1"+listIndex); 
         setResult(QUICKADD_EVENT); 
         finish(); 
         break; 
        } 
        case 2: 
         Log.d("MyAPP","case 2"+listIndex); 
         setResult(VIEW_EVENTS); 
         finish(); 
         break; 
        case 3: 
         Log.d("MyAPP","case 3"+listIndex); 
         setResult(CREATE_CALENDAR); 
         finish(); 
         break; 
        case 4: 
         Log.d("MyAPP","case 4"+listIndex); 
         setResult(EDIT_CALENDAR); 
         finish(); 
         break; 
       } 

      } 

     }); 

Am проверка на случае 1 и Log кошачьи распечатывают правый журнал, но не печатает, что Вход onActivityResut метод, который означает, что он не возвращается, и я не знаю причину бэхов и это. Я переместил блок переключателей, чтобы переопределить метод finish(), и я получил ту же проблему.

ответ

0

Линия,

startActivityForResult(intent.setClass(this, CalendarQuickAddActivity.class), REQUEST_CAL_ACT); 

гарантирует, что ваш результат возвращается CalendarQuickAddActivity. Это то, что вы хотите?

Кроме того, что такое переменная intent? Это глобально? Это немного запутывает ... вы можете просто создать новый Intent с new Intent(this, CalendarQuickAddActivity.class), чтобы сделать ваш код более читаемым.

+1

Спасибо за ваш ответ, проблема возникает в первой активности вызова «startActivityForResult (intent.setClass (это, CalendarTasks.class), REQUEST_CAL_TASK);». Он должен вернуть результат родительской активности, чтобы я мог выполнить указанную вами строку, где CalendarQuickAddActivity - это класс, который я хочу выполнить для результата из класса CalendarTasks (проблема в том, что я даже не выполняю onActivityResult). И да намерение - это глобальная переменная в родительской активности, где я использую ее в разных вызовах активности. – Tar3k

0

Если вы используете ActivityGroup или TabGroupActivity, вам необходимо перезаписать handleActivityResult (requestCode, resultCode, data) вместо onActivityResult (requestCode, resultCode, data).

+0

Спасибо, но я не использую ни один – Tar3k

0

Вам нужно позвонить startActivityForResult только тогда он будет идти назад

startActivityForResult(intent.setClass(this, CalendarQuickAddActivity.class), REQUEST_CAL_ACT); 
Смежные вопросы