【问题标题】:Pass value from activity to currently active fragment when EditTextvalue changed every time当 EditText 值每次更改时,将值从活动传递到当前活动片段
【发布时间】:2019-01-20 07:15:49
【问题描述】:

我从 1 个月开始制作分类的 android 应用程序,但我遇到了问题。 场景如下。

我有一个活动,其中有一个片段在该片段(Ads_display)上显示广告,如 olx,在工具栏中我有一个城市搜索片段,用户可以在其中更改城市它在第一次创建片段时工作得非常好,但是片段处于活动状态后,该 textView 的更新值(我从城市搜索片段中获取 textView 中的值)不会转移到 Ads_display 片段,当我每次举杯时,它都会向我显示在片段创建时传递的旧城市名称。提前抱歉,因为我无法将我的代码 sn-p 粘贴到这里,因为我每天都在尝试做一些事情,现在情况是我什至不明白我做了什么。

请用您宝贵的答案帮助我解决这种情况,谢谢。因为我已经到了截止日期。

【问题讨论】:

  • 你必须发布一些代码!,我能想到至少 10 种可能出错的不同方式。
  • @KARAMJABER 请如果您发布您的答案
  • @KARAMJABER 任何链接任何可能有助于演练的博客
  • 嗨,欢迎来到堆栈溢出。您需要提供所有详细信息并清楚地提及您想要的问题。请参阅How to Ask 链接了解更多详情并相应更新您的问题。
  • @JeroenHeier 我想我已经清楚地解释了我的问题

标签: android android-activity fragment


【解决方案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);
       }

或者你可以使用一个界面,我看不到你的代码,所以我不能说哪个最适合你。

【讨论】:

    【解决方案2】:

    您必须在活动和片段之间创建接口作为侦听器,但我建议使用 EventBus 它将使这种方法对您来说很容易

    https://github.com/greenrobot/EventBus , http://greenrobot.org/eventbus/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多