2017-02-14 10 views
0

Я хочу передать несколько значений из моего фрагмента в другой фрагмент.Пакет фрагментов Android может получить только один аргумент

Это то, что я делаю в фрагменте A:

mCallback.passData("title","test"); 

активность:

Activity

Фрагмент B:

Bundle args = getArguments(); 
    if(args != null){ 
     Toast.makeText(getActivity(), args.getString(NAME_RECEIVE), Toast.LENGTH_LONG).show(); 
     Toast.makeText(getActivity(), args.getString(TITLE_RECEIVE), Toast.LENGTH_LONG).show(); 
    } 

Но я только один аргумент из моей пачке

Спасибо @ cricket_007

Я проходил 2 раз ту же строку для NAME_RECEIVE и TITLE_RECEIVE:

final static String TITLE_RECEIVE = "data_receive"; 
final static String NAME_RECEIVE = "data_receive"; 
+4

что 'NAME_RECEIVE и' 'TITEL_RECEIVE, они не должны быть такими же – WenChao

+0

Это не самый лучший способ, экземпляр фрагмента. Вероятно, вы должны использовать статическую функцию 'newInstance (String arg1, String arg2)'. Подробнее здесь: http://stackoverflow.com/questions/9245408/best-practice-for-instantiating-a-new-android-fragment – azurh

+0

Возможно, вы захотите исправить свою типографию TITEL –

ответ

6

Ваши строки одинаковы.

Посмотрите на свой отладчик, и вы увидите Bundle[{data_received="test"}], а это означает, что NAME_RECEIVE точно такой же значение TITEL_RECEIVE, который не является "data_received"

Кроме того, никогда не Toast две вещи сразу. Вы увидите только один всплывающий ящик.

Попробуйте вместо Log.

Bundle args = getArguments(); 
if(args != null){ 
    Log.d(NAME_RECEIVE, args.getString(NAME_RECEIVE)); 
    Log.d(TITEL_RECEIVE, args.getString(TITEL_RECEIVE)); 
} 

Дополнительные ссылки для «правильного» создания фрагмента: Best practice for instantiating a new Android Fragment

+1

Спасибо @ cricket_007. Действительно, я использовал это в фрагменте B: конечная статическая строка TITLE_RECEIVE = "data_receive"; final static String NAME_RECEIVE = "data_receive"; – Joris