繁体   English   中英

从适配器到片段类的传递值有问题吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM