1

I'm passing value from adapter to fragment class,

Here adapter class,

 rbFolder.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if(selected != null)
                {
                    selected.setChecked(false);
                    String meee =  data.get(position).getTypeId();
                    System.out.println("*******so*inside********"+meee);

                }

                rbFolder.setChecked(true);
               String so =  data.get(position).getTypeId();
                System.out.println("*******so*********"+so);
                selected = rbFolder;
                System.out.println("********selected*******"+selected);
                Fragment homepage = new Fragment();
                FragmentTransaction fragmentManager =((FragmentActivity)context).getSupportFragmentManager()
                        .beginTransaction();
                Bundle bundle=new Bundle();
                bundle.putString("name", so); //key and value
                System.out.println("*****venki***meee*******"+so);

                homepage.setArguments(bundle);
              //  fragmentManager.replace(R.id.content_frame, homepage);
                fragmentManager.addToBackStack(null);
                fragmentManager.commit();
            }
        });

In this, putstring working well but in my fragemt class i didnt receive values. I'm trouble in this place. Here Fragmnet class,

      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (rootview != null) {
        ViewGroup parent = (ViewGroup) rootview.getParent();
        if (parent != null)
            parent.removeView(rootview);
    }
    try {

        rootview = inflater.inflate(R.layout.homepage, container, false);
    } catch (InflateException e) {
    /* map is already there, just return view as it is */
    }

Here I get values from adapter but this is not working,

   Bundle bundle = ((Activity)context).getIntent().getExtras();
    if (bundle != null)
    {
        String strtext=getArguments().getString("name");
        System.out.println("*******strtext*********"+strtext);

    }

    return rootview;
}
Ana
  • 174
  • 1
  • 2
  • 10

3 Answers3

1

First of All you have to call your HomeFragment() instead of fragment like that

Fragment homepage = new HomeFragment();
            FragmentTransaction fragmentManager =((FragmentActivity)context).getSupportFragmentManager()
                    .beginTransaction();
            Bundle bundle=new Bundle();
            bundle.putString("name", so); //key and value
            homepage.setArguments(bundle);
            fragmentManager.replace(R.id.content_frame, homepage);
            fragmentManager.addToBackStack(null);
            fragmentManager.commit();

When you want to get value inside home fragment then

    if( getArguments() != null)
      String strtext = getArguments().getString("name");
Mohit Suthar
  • 8,725
  • 10
  • 37
  • 67
  • Thank you Its working fine. Im using radio button in listview. I choose radio button in listview. I get value from adapter to fragment. but after i receive value . fragment class get refresh fragment class . so radio button goes to unchecked. how to solve this problem. – Ana Nov 20 '17 at 07:10
  • I chcked radio button and get value then i pass the value to fragment class. after received the values in fragment class. the page refresh so my radio button goes to unchecked state.How to display checked radio button – Ana Nov 20 '17 at 07:12
  • @Ana you can check in this http://www.androhub.com/android-listview-radiobutton/ & http://abhiandroid.com/ui/radiobutton-inside-listview.htmlmight be helpful – Mohit Suthar Nov 20 '17 at 07:52
1
  • follow steps one by one, copy Context context; List rowItems; onItemClickListner onItemClickListner; and pest into your adapter then copy two constructor methods and then pest on item click method to pass data to fragment.

    in your fragment class set adapter item on click listener code in this way...

madapter.setOnClickListener(new MyListAdapterTemp.onItemClickListner() {
             @Override
             public void onClick(String str) {
                 
             }
         });

        Context context;
        List<String> rowItems;
        onItemClickListner onItemClickListner;

  
        public MyListAdapterTemp(Context context, List<String> items) {
            this.context = context;
            this.rowItems = items;

        }

        public void setOnClickListener(onItemClickListner onItemClickListner) {
            this.onItemClickListner = onItemClickListner;

        }

 
    holder.txtDesc.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onItemClickListner.onClick(rowItems.get(position).toString().trim().toUpperCase());
                          
                }
            });
  • this method works fine on my app and for activity to fragment , fragment to activity we can pass data using interface but not this way this is best and proper way to perform this type of operations.

0
Fragment homepage = new Fragment();

this is supposed to be your Fragment class name -

Fragment homepage = new MyFragment();

And Your Fragment be like -

public class MyFragment extends Fragment {
    @Override
    public void onCreate(...) {
         Bundle b = getArguments(); //To get extras from Fragment
    }
}

Other than that,

Bundle bundle = ((Activity)context).getIntent().getExtras();

This is used for an Activity. For Fragment you have to use getArguments()

Paresh P.
  • 6,677
  • 1
  • 14
  • 26