2016-06-22 2 views
0

Я пытаюсь сделать следующее:Возврат результат в операцию из DialogFragment

  1. Показать диалоговое фрагмент из деятельности (не фрагментировать);
  2. Получить результат в Управлении.

Проблема в том, что onActivityResult в Activity не вызывается.

Вот как я показываю в DialogFragment

DriverRatingDialogFragment dp = new DriverRatingDialogFragment(); 
// this solution works well in case of showing dialog from a fragment 
// but I have to show it from the Activity 
// dp.setTargetFragment(getSupportFragmentManager().findFragmentById(R.id.flContent), DriverRatingDialogFragment.REQUEST_CODE); 
dp.show(getSupportFragmentManager(), DriverRatingDialogFragment.ARG_RATING); 

А вот как я пытаюсь вернуть результат из DialogFragment:

Intent intent = new Intent(); 

    // This solution works well in case of previously setting target Fragment, 
    // but I have to return result to Activity 

    // getTargetFragment().onActivityResult(
    // getTargetRequestCode(), REQUEST_CODE, intent); 


    // and with this attempt App crashes 
    // this.onActivityResult(REQUEST_CODE, Activity.RESULT_OK, intent); 

здесь, где я хочу, чтобы получить результат в деятельности , но он не вызван:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == DriverRatingDialogFragment.REQUEST_CODE) { 
      // todo 

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

Что случилось?

+0

Возможный дубликат [Получить результат из DialogFragment] (http://stackoverflow.com/questions/10905312/receive-result-from-dialogfragment) – tir38

ответ

0

Я запускаю DialogFragment так же, как и вы.

CreatePostDialog createPostDialog = new CreatePostDialog(); 
createPostDialog.show(getSupportFragmentManager(), "create_post_dialog"); 

И я отправляю данные, используя открытый метод в своей деятельности, а не с намерениями.

((MainActivity)mContext).logout(Utils.getLocation(v)); 

Фрагменты, приведенные выше, являются скопированными примерами моего рабочего кода. Выход из системы в этом случае является общедоступным методом в MainActivity, который принимает точку и делает то, что ей нужно.

+0

Прохладный, я об этом не думал. Может быть, это не лучшая практика, но очень удобная в моем случае. Благодаря! –

+0

Я по-прежнему новичок в кодировании, но у меня были друзья с большим опытом использования подобных методов. В конце вы всегда можете проверить, является ли контекст экземпляром MainActivity экземпляра перед выполнением. –

+0

Не делайте этого. Вы связываете свой фрагмент с одним действием. Теперь только «MainActivity» может содержать CreatePostDialog (фрагмент). Что произойдет, если вам нужен этот диалог в другом месте вашего приложения? – tir38

1

onActivityResult должен получить информацию после вызова startActivityForResult, что не является вашим делом.

Какие данные вы должны получить в диалоговом окне?

DialogFragment обычно используется во фрагменте, а не в действии. Посмотрите на диалоговое окно предупреждения.

+0

Спасибо. Я должен вернуть два удвоения из него –

+0

Вы можете установить значения переменных активности из обычного диалога –