我将值从适配器传递给片段类
这里是适配器类,
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();
}
});
在这里,字符串运作良好,但在我的fragemt类中我没有收到值。我在这个地方遇到麻烦。 这里是Fragmnet类,
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 */
}
这里我从适配器获取值,但这不起作用,
Bundle bundle = ((Activity)context).getIntent().getExtras();
if (bundle != null)
{
String strtext=getArguments().getString("name");
System.out.println("*******strtext*********"+strtext);
}
return rootview;
}
答案 0 :(得分:1)
首先,您必须将 HomeFragment ()而不是片段称为
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();
如果您想在主页片段中获取价值,那么
if( getArguments() != null)
String strtext = getArguments().getString("name");
答案 1 :(得分:1)
一步一步地进行操作,复制Context上下文; 列出rowItems; onItemClickListner onItemClickListner;害虫进入适配器 然后复制两个构造方法,然后对项目单击方法进行有害处理以将数据传递给片段。
以这种方式在点击侦听器代码中的片段类集适配器项中...
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());
}
});
此方法在我的应用程序上可以正常工作,对于活动进行分段,对于活动进行分段,我们可以使用接口传递数据,但不能 这是执行此类操作的最佳方法。
答案 2 :(得分:0)
Fragment homepage = new Fragment();
这应该是你的Fragment
班级名称 -
Fragment homepage = new MyFragment();
你的片段就像 -
public class MyFragment extends Fragment {
@Override
public void onCreate(...) {
Bundle b = getArguments(); //To get extras from Fragment
}
}
除此之外,
Bundle bundle = ((Activity)context).getIntent().getExtras();
这用于Activity
。对于Fragment
,您必须使用getArguments()