GetFragmentManager from ArrayAdapter

I have a listView populated with my custom ArrayAdapter. Each view has a button. I want to change the current fragment when a button is clicked. This is my code:

public class CheckInSArrayAdapter extends ArrayAdapter<JSONObject> { @Override public View getView(int position, View convertView, ViewGroup parent) { return getViewOptimize(position, convertView, parent); } public View getViewOptimize(int position, View convertView, ViewGroup parent) { ...... viewHolder.commentBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { ??? <<<<< }); return convertView; } private class ViewHolder { ... public Button commentBtn; } } 

So now I cannot call getFragmentManager from OnClickListener. How can i do this?

+6
source share
2 answers

OK, maybe I'm a little late, but maybe this will help some people do this.

In the class where you are calling the adapter, you need to extend or implement "FragmentActivity". Then your activity will contain a fragment file.

When you call your adapter, call it with a class that extends FragmentActivity

 MyAdapterName = new MyAdapterName(MyClassName.this, Objects); 

Then in your adapter in getView () - do it.

 final Context context = parent.getContext(); FragmentManager fm = ((Activity) context).getFragmentManager(); 

Be careful to use the good Android browser FragementManager - android.app.FragmentManager is not android.support.v4.app.FragmentManager;

+24
source

its so late, but no one answered this question here.

you can call the fragment manager in your getview method using

 FragmentManager fm = ((Activity)context).getFragmentManager(); 

getFragmentManager () is a method of the Activity class.

eg

 holder.tvBuy.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Fragment fragment; fragment = new Buy(); ((Activity)context).getFragmentManager().beginTransaction().replace(R.id.content_frame,fragment).commit(); } } 

here you need to pass your activity as context to your adapter.

hope this helps someone ....

+4
source

Source: https://habr.com/ru/post/953448/


All Articles