首页 > 解决方案 > 我想在片段中设置文本,但我现在可以做的是在下一个片段中设置文本

问题描述

我想让应用程序监听点击事件并执行 editText.setText 方法。但我无法访问正在显示的当前页面。setText 方法适用于下一个片段。我尝试了很多东西,但结果是一样的。代码是关于我的片段的。(片段在 viewpager 上)


    public class myFragment extends Fragment{
      EditText editText;
        webTomainadapter wtma=new webTomainadapter();
        viewPagerAdapter ad=new viewPagerAdapter(getFragmentManager());
        String s;



        public myFragment() {
            // Required empty public constructor
        }


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if (getArguments() != null) {
                wtma.setOnItemListener(new webTomainadapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(String v, int position) {
                        editText.setText(editText.getText().append(v));

                    }
                });
            }
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            final View root=inflater.inflate(R.layout.fragment_my, container, false);
             editText=root.findViewById(R.id.editText);
            editText.setHint("HINT");
           listener();

            return root;
        }


        public void listener(){
            wtma.setOnItemListener(new webTomainadapter.OnItemClickListener() {
                @Override
                public void onItemClick(String v, int position) {
                    Log.i("info","listener");
                    Fragment current=getActivity().getSupportFragmentManager().findFragmentById(R.id.viewPage);
                    if(current instanceof myFragment){
                       FragmentTransaction fragmentTransaction=
                               (getActivity()).getSupportFragmentManager().beginTransaction();
                       fragmentTransaction.detach(current);

                       fragmentTransaction.attach(current);
                        editText.setText(editText.getText().append(v));
                       fragmentTransaction.commit();
                    }




                }
            });
        }
    }

标签: androidandroid-fragments

解决方案


使用捆绑

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString(key, value);
fragment.setArguments(bundle);

在 onCreate() 方法中检索数据,在下一个片段中

Bundle bundle = this.getArguments();
if (bundle != null) {
    String str = bundle.getInt(key, defaultValue);
}

推荐阅读