[英]Trouble In pass values from adapter to fragment 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();
}
});
在这种情况下,putstring运作良好,但是在我的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;
}
首先,您必须调用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");
按照步骤一,复制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()); } });
此方法在我的应用程序上可以正常工作,对于要进行分段的活动,对于分段的活动,我们可以使用接口传递数据,但这种方式不是最好的方法,它是执行此类操作的最佳方式。
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.