2014-09-02 4 views
0

У меня есть этот код в моем MainActivity:Android: startActivityForResult в MainActivity

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView=null; 
      if (getArguments().getInt(ARG_SECTION_NUMBER)==1){ 
       rootView = inflater.inflate(R.layout.fragment_main, container, false); 
       final Button newProdButton = (Button) rootView.findViewById(R.id.new_prod_button); 
       newProdButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent intent = new Intent (getActivity(), NewProdActivity.class); 
         startActivityForResult (intent, OK_NEW_PRODUCT); 
         } 

       }); 

и после

public void onActivityResult(int requestCode, int resultCode, Intent data) {  
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode==OK_NEW_PRODUCT){ 
      if (resultCode == Activity.RESULT_OK) { 
       Intent intent = new Intent (MainActivity.this, ProductActivity.class); 
       startActivity(intent); 

      } 
     } 
     } 

Цель состоит в том, чтобы начать вторую деятельность в конце первого, в случае, последний успешно выполнил все операции.

, но когда я заканчиваю первую задачу, ничего не происходит, и приложение остается на MainActivity.

Кто-нибудь знает почему ?!

EDIT

решаемые с:

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT); 
+0

вы пробовали => ResultCode == RESULT_OK вместо ResultCode == Activity.RESULT_OK? – Jamil

+0

добавить некоторый вход в метод onActivityResult к определенному запуску программы при финишировании первой активности. Если нет, пожалуйста, определите метод callResult для завершения первого действия. – UperOne

+0

Лемме спрашивает что-то только для подтверждения, вы уверены, что ваша первая деятельность - это деятельность, а не фрагмент? –

ответ

0

Проверьте значения requestCode и resultCode когда onActivityResult достигается. Действительно, если первое действие не вызывает setResult(RESULT_OK), андроид будет возвращать RESULT_CANCELED для вас, а второй вызов startActivity никогда не будет достигнут.

+0

То же самое значение OK_NEW_PRODUCT = 0 – Simone11489

+0

Вероятно, вы получаете 'RESULT_CANCELED'. если вы явно не вызываете 'SetResult (RESULT_OK)', Android установит для вас 'RESULT_CANCELED'. – HappyCactus

+0

Не могли бы вы отредактировать свой ответ @HappyCactus, чтобы включить информацию из вашего комментария? В качестве автономного ответа это всего лишь комментарий (и является кандидатом на удаление). –

0

Вы должны setResult(RESULT_OK) до окончания первой активности

+0

Выполнено: в другом виде у меня есть: setResult (Activity.RESULT_OK); finish(); – Simone11489

+0

Работает ли он сейчас? –

+0

Это было уже так и не получилось – Simone11489

0

Ваш код MainActivity предполагает, что это fragment.If это так, используйте

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);

вместо

startActivityForResult (intent, OK_NEW_PRODUCT);

+0

Код, который вы разместили здесь для 'MainActivity', содержит' getActivity() '. Не так ли? Вы уверены, что код, который вы опубликовали, является точно такой же, какой у вас есть в вашем затмении? –

+0

Я написал неверный ответ Извините – Simone11489

+0

неправильный ответ? Что вы имеете в виду? Если вы решили его и опубликовали свой ответ, который сработал для вас, тогда примите этот ответ, а затем нажмите «правильная отметка» ниже вашего ответа. –

0

Хорошо, я решил; хитрость заключается в том, чтобы написать следующим образом:

getActivity().startActivityForResult (intent, OK_NEW_PRODUCT); 

Благодаря всяких

+0

не exacly: если я делаю по-своему (поставьте .getActivity внутри метода onActivityResult) У меня есть эта ошибка: _ Метод getActivity() не определен для типа MainActivity_ – Simone11489

+0

Если этот ответ сработал для вас, тогда примите его, нажав кнопку " правой отметки "ниже вашего ответа. –

+0

Я не могу принять свой собственный ответ через 2 дня .... – Simone11489