Je parviens à transmettre des données du fragment au fragment de la boîte de dialogue, en utilisant bundle pour implémenter la fonction de transmission des données. mais le problème est que je garde la valeur nulle dans mon fragment de dialogue même quand je débogue le programme montre déjà que mon paquet contient déjà les données. Est-ce que je ne peux pas utiliser bundle pour transmettre les données ou ma façon d'utiliser bundle est faux.Données de passe Android de fragment à dialogfragment
MainActivity
public class MainActivity extends Fragment {
Button test;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View h = inflater.inflate(R.layout.activity_main, container, false);
test = (Button) h.findViewById(R.id.test);
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle args = new Bundle();
args.putString("key", "asdasdasdasd");
FragmentDialog newFragment = new FragmentDialog();
newFragment.setArguments(args);
newFragment.show(getActivity().getSupportFragmentManager(), "TAG");
}
});
onOpenDialog();
return h;
}
public void onOpenDialog()
{
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentDialog overlay = new FragmentDialog();
overlay.show(fm, "FragmentDialog");
}
}
FragmentDialog
public class FragmentDialog extends DialogFragment
{
private SectionsPagerAdapter sectionsPagerAdapter;
private ViewPager viewPager;
TextView textView;
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState)
{
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
//dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.YELLOW));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialog, container);
// tab slider
sectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
// Set up the ViewPager with the sections adapter.
viewPager = (ViewPager)view.findViewById(R.id.pager);
viewPager.setAdapter(sectionsPagerAdapter);
textView =(TextView)view.findViewById(R.id.textview);
Bundle mArgs = getArguments();
String myValue = mArgs.getString("key");
textView.setText(myValue);
return view;
}
public class SectionsPagerAdapter extends FragmentPagerAdapter
{
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0)
{
// find first fragment...
Fragment_Tab_1 ft1 = new Fragment_Tab_1();
return ft1;
}
if (position == 1)
{
// find first fragment...
Fragment_Tab_2 ft2 = new Fragment_Tab_2();
return ft2;
}
else if (position == 2)
{
// find first fragment...
Fragment_Tab_3 ft3 = new Fragment_Tab_3();
return ft3;
}
return null;
}
@Override
public int getCount() {
// Show 2 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "First Tab";
case 1:
return "Second Tab";
case 2:
return "Third Tab";
}
return null;
}
}
}
Pourquoi appel sont vous 'onOpenDialog()' 'dans onCreateView()' ???? –
@BurhanuddinRashid onOpenDialog(); est d'appeler le message d'invite de mon dialogue –