2011-01-15 2 views
0

У меня есть 3-х классов, давай назовем их 1, 2 и 3.андроид: окончание действия на вкладке

Класс 1 распространяется TabActivity и организует всю вкладку вещь, класс 2 и 3 только два отдельных вкладок, каждая с некоторые строки текста. Я вызываю Class 1 из другого действия, используя startActivityForResult.

Затем я добавил optionsMenu в классе 2, и когда пользователь нажимает на optionMenu, следующий код выполняется:

@Override 
    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     Intent i = new Intent(); 
     switch(item.getItemId()) { 
      case Result.NEXT_ID: 
       i.putExtra(Result.PAGE_REQUEST, NEXT); 
       setResult(RESULT_OK, i); 
       finish(); 
       break; 
      case Result.PREV_ID: 
       i.putExtra(Result.PAGE_REQUEST, PREV); 
       setResult(RESULT_OK, i); 
       finish(); 
     } 
     return super.onMenuItemSelected(featureId, item); 
    } 

В моем родительском классе (класс, который называется 1, чтобы начать с), в его функция onActivityResult, я хочу получить данные из дополнительных функций. Тем не менее, намерение всегда равно нулю, и я не могу понять, почему.

Когда я вызываю finish() в классе 2, вызывает ли он вызов другой функции в классе 1? Должен ли я каким-либо образом передавать данные о намерениях?

Вот startactivityforresult, Результат Класс 1

private void getResult(String result) { 
     Intent i = new Intent(this, Result.class); 
     i.putExtra(RESULT, result); 
     i.putExtra(PAGE, curr_start_page); 
     startActivityForResult(i, 0); 
    } 

Я также попытался поставить методы optionmenu в классе 1, однако, когда я звоню отделку(), он ничего не делает.

Edit:

Я думаю, что я должен поставить optionsmenu в класс 1, так как им отправную 1-го класса в startActivityForResult. Но как выйти из макета вкладки? call finish() в классе 1, похоже, не делает этого.

+0

Можете ли вы показать, как вы называете startActivityForResult? – gulbrandr

+0

Я вызываю класс 1, смотрю выше^ – Jin

ответ

1

Я только что получил его. В методе optionsmenu в классе 2, мне нужно сделать

this.getParent().setResult(RESULT_OK, i); 

затем вызвать отделку(), она работает правильно.

+0

Это вне темы, но вы прочитали это? http://stackoverflow.com/questions/1568739/android-why-shouldnt-i-use-activities-inside-tabs – gulbrandr

0

В классе 1 переопределите onActivityResult и реализуйте его, выполнив setResult с тем, что вы получили.

Посмотрите, работает ли это.

Вы пытаетесь отправить значение от родителя от 2 до 1. Но когда класс 2 заканчивается, он просто отправляет свое значение классу 1. Я не думаю, что класс 1 возвращает это значение своему вызывающему.

+0

Я просто попробовал это, и я установилResult из аргументов в onActivityResult для класса 1, но намерение по-прежнему равно нулю. – Jin