Отправить данные из IntentService во фрагмент

Поскольку я попробовал BroadCastReciever в этом вопросе, я попытался передать данные с аргументами тоже в моем журнале, это нормально.

Bundle bundle = new Bundle();
ArticleDetailFragment fragobj = new ArticleDetailFragment().newInstance2(jsonString);
fragobj.setArguments(bundle);
Log.i(TAG, "onHandleIntent: " + bundle);

но я получил ноль:

public static ArticleDetailFragment newInstance2(String item) {
        Bundle arguments = new Bundle();
        arguments.putString("edttext", item);
        ArticleDetailFragment fragment = new ArticleDetailFragment();
        fragment.setArguments(arguments);
        return fragment;
    }

в моем onCreateView():

Log.i(TAG, "onCreateViewBundle: " + getArguments().getString("edttext"));

Каков наилучший способ сделать это?

1 ответ

Это потому, что сначала вы устанавливаете правильные аргументы фрагмента с правильными данными, а затем переопределяете их вне newInstance2.

Bundle bundle = new Bundle();
ArticleDetailFragment fragobj = new ArticleDetailFragment().newInstance2(jsonString);
fragobj.setArguments(bundle); // <- here you override the arguments that were set inside newInstance with a bundle that has no data in it
Log.i(TAG, "onHandleIntent: " + bundle);

должно быть

ArticleDetailFragment fragobj = ArticleDetailFragment().newInstance2(jsonString);
Log.i(TAG, "onHandleIntent: " + fragobj.getArguments().getString("edttext"));

Также другой ответ говорит, чтобы удалить new ключевое слово. Он прав!

Другие вопросы по тегам