每次更改EditTextvalue时,将值从活动传递到当前活动的片段

时间:2019-01-20 07:15:50

标签: android android-activity fragment

我从一个月开始就陷入了分类Android应用程序的困境。 情况如下。

我有一个活动,其中有一个片段在olx之类的片段(Ads_display)上显示广告,在工具栏中,我有一个城市搜索片段,用户可以在第一次创建片段时更改城市,这在第一次工作时效果很好,激活片段后,当我每次举杯时向我展示在创建片段时通过的旧城市名称时,该textView的更新值(我正在从城市搜索片段中获取textView的值)不会转移到Ads_display片段< / strong>。对不起,因为我无法在此处粘贴代码段,因为现在我每天都尝试做一些事情,结果是我什至不了解自己所做的事情。

由于您已经提出了我的最后期限,请在此感谢您的宝贵答复,帮助我解决这种情况。

2 个答案:

答案 0 :(得分:1)

我会否决这个问题,但您似乎处境艰难。

首先检查如何在片段之间传递数据:

这就是我要做的:

 //Set the edit text on a changed listener
    editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {


            }

            @Override
            public void afterTextChanged(Editable s) {
                // Pass values from your fragment to your other fragment

        Bundle b = new Bundle();
    b.putString("city", s);

    FragmentB fragB = new FragmentB();
    fragB.setArguments(b); 
    getFragmentManager().beginTransaction().replace(R.id.your_container, fragB);

            }
        });





Then you have to receive your values in the fragment

    Bundle b = this.getArguments();
    if(b != null){
       String city = b.getString("city");
    }

如果您的搜索值来自活动,则只需将活动中的值传递给片段即可:

  editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

        Bundle bundle = new Bundle();
        bundle.putString(s, "city");
        tab1.setArguments(bundle);


            }
        });

然后在片段中获取参数

       if (getArguments() != null) {
            String city = getArguments().getString("city);
       }

或者您可以使用界面,我看不到您的代码,所以我无法说出最适合您的代码。

答案 1 :(得分:0)

您必须在活动和片段之间创建接口作为侦听器,但是我建议使用EventBus,它将使您轻松实现此方法

https://github.com/greenrobot/EventBushttp://greenrobot.org/eventbus/