Reputation: 21
Unable to call getSupportFragmentManager()
from CustomAdapter & setArguments(bundle)
in this code and use it in another fragment. I'm not able to resolve these two methods in my code. How do I call these methods. Kindly somebody try to help me
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class CustomGridViewAdapter extends ArrayAdapter<CategoryPost> {
private Context context;
private int layoutResourceId;
private ArrayList<CategoryPost> data = new ArrayList<CategoryPost>();
private Fragment getquoteFrag;
public CustomGridViewAdapter(Context context, int resource, ArrayList<CategoryPost> objects) {
super(context, resource, objects);
this.layoutResourceId = resource;
this.context = context;
this.data = objects;
}
static class ViewHolder {
TextView success, message, id, name;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null){
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(layoutResourceId, parent, false);
holder.id = (TextView)convertView.findViewById(R.id.tv_data_id);
holder.name = (TextView)convertView.findViewById(R.id.tv_name_id);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
final CategoryPost post = data.get(position);
holder.name.setText(post.getName());
holder.name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
getquoteFrag = new GetQuoteFragment();
FragmentManager quote_fm = getSupportFragmentManager().beginTransaction();;
FragmentTransaction quote_ft = quote_fm.beginTransaction();
bundle.putString("pos", String.valueOf(post.getId()));
quote_fm.setArguments(bundle);
}
});
return convertView;
}
}
Upvotes: 1
Views: 3006
Reputation: 972
Try below code :
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class CustomGridViewAdapter extends ArrayAdapter<CategoryPost> {
private Context context;
private int layoutResourceId;
private ArrayList<CategoryPost> data = new ArrayList<CategoryPost>();
private Fragment getquoteFrag;
public CustomGridViewAdapter(Context context, int resource, ArrayList<CategoryPost> objects) {
super(context, resource, objects);
this.layoutResourceId = resource;
this.context = context;
this.data = objects;
}
static class ViewHolder
{
TextView success, message, id, name;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null){
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(layoutResourceId, parent, false);
holder.id = (TextView)convertView.findViewById(R.id.tv_data_id);
holder.name = (TextView)convertView.findViewById(R.id.tv_name_id);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
final CategoryPost post = data.get(position);
holder.name.setText(post.getName());
holder.name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
getquoteFrag = new GetQuoteFragment();
FragmentManager quote_fm = ((MainActivity)context).getSupportFragmentManager().beginTransaction();;
FragmentTransaction quote_ft = quote_fm.beginTransaction();
bundle.putString("pos", String.valueOf(post.getId()));
getquoteFrag.setArguments(bundle);
quote_ft.replace(R.id.container,getquoteFrag)
quote_ft.commit();
}
});
return convertView;
}
}
Upvotes: 6
Reputation: 1884
call something like this
FragmentManager quote_fm = context.getSupportFragmentManager().beginTransaction();
or
FragmentManager quote_fm = ((MainActivity)context).getSupportFragmentManager().beginTransaction();
to start fragment required code is
Bundle bundle = new Bundle();
getquoteFrag = new GetQuoteFragment();
FragmentManager quote_fm = ((MainActivity)context).getSupportFragmentManager().beginTransaction();;
FragmentTransaction quote_ft = quote_fm.beginTransaction();
bundle.putString("pos", String.valueOf(post.getId())); // you can also send this value as an integer type
getquoteFrag.setArguments(bundle);
quote_ft.replace(R.id.your_main_activity_container, getquoteFrag)
quote_ft.commit();
for below asked quetion to get values in another fragment while calling it.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String post_id= getArguments().getString("pos");
// you can also pass values in int type.
int pos = getArguments().getInt("pos");
}
}
Upvotes: 0