2016-08-17 4 views
2

Я хочу отправить данные из активности в фрагмент, но данные фрагмента, представленные мной, равны нулю. Я не знаю почему. это код, когда я отправляю данные и вызываю фрагмент.отправить данные из активности в фрагмент андроидной студии

String b = "hahhaha"; 
Bundle bundle = new Bundle(); 
bundle.putString("coba" ,b); 
bundle.putSerializable("modelassign" ,modelAssign); 

// set Fragmentclass Arguments 
ViewTaskFragment vtf = new ViewTaskFragment(); 
vtf.setArguments(bundle); 

//call fragment 
FragmentTransaction transact=getSupportFragmentManager().beginTransaction(); 
transact.add(R.id.content_frame, new ViewTaskFragment(), "viewtaskfragment"); 
transact.commit(); 

и это код, когда я получить данные посылаются:

modelAssign = (ModelAssign) this.getArguments().getSerializable("modelassign"); 
String haha = this.getArguments().getString("coba"); 

Может кто-нибудь помочь?

ответ

1

в то время как объявление ding для транзакции, вы создаете новый экземпляр ViewTaskFragment(), используйте уже созданный объект, в котором вы храните пакет.

transact.add(R.id.content_frame, vtf , "viewtaskfragment"); 
+0

WAW .. это очень полезно, спасибо –

1

можно передать аргументы расслоение в Fragment:

ViewTaskFragment vtf = new ViewTaskFragment(); 
vtf.setArguments(bundle); 

но затем создать новый Fragment для сделки:

transact.add(R.id.content_frame, new ViewTaskFragment(), "viewtaskfragment"); 

Используйте ранее созданную Fragment, который содержит аргументы:

transact.add(R.id.content_frame, vtf, "viewtaskfragment"); 
0

Изменить этот

transact.add(R.id.content_frame, new ViewTaskFragment(), "viewtaskfragment"); 

в

transact.add(R.id.content_frame, vtf, "viewtaskfragment");