【问题标题】:Pass the values realtime from fragmentactivity to fragment将值从片段活动实时传递到片段
【发布时间】:2013-02-12 15:01:20
【问题描述】:

我有一个程序,其中我需要在片段中实时更新值,当它进入片段活动时。快照如下所示

在这里,当我在片段活动(图像的上半部分)编辑 AL、K1 等的文本字段中输入值时,答案必须在下面的片段中更新。我应该如何将值实时发送到片段。帮帮我,我是初学者

【问题讨论】:

  • @abc667 但我想实时发送
  • 什么比调用方法和传递值更实时?这种行为会导致什么结果,为什么不符合您的要求?
  • @AhamBrahmaasmi 在下面查看我的答案。
  • @AhamBrahmaasmi 我更新了我的答案并添加了一个示例。看看吧。

标签: android android-fragments android-fragmentactivity


【解决方案1】:

在您创建片段的类中,创建一个名为public void updateText(String text) 的方法。在这个方法中,做所有需要的计算等,用传入的字符串计算片段中的数字,然后将文本设置为所有计算后得到的字符串。在FragmentActivity 中,使用editText1.addTextChangedListener(this) 添加textChangedListener 并将implements TextWatcher 添加到类声明中。添加导入和所有未实现的方法,在最近添加的onTextChanged 方法中,通过说fragment.updateText(String) 来调用updateText(String) 方法,其中fragment 是您在将其附加到FragmentActivity 时创建的Fragment 对象。
我希望这会有所帮助!如果您需要其他内容,请告诉我。

或者,您可以更改 updateText(String) 方法以添加或更改参数以最适合您的需要。

以下是一个粗略的示例希望会有所帮助。

package com.smarticle.example;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class Example extends Activity implements TextWatcher {

ExampleFragment exampleFragment;
EditText editText1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    exampleFragment = new ExampleFragment();
    editText1 = (EditText) findViewById(R.id.editText1);
    editText1.addTextChangedListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    editText1.removeTextChangedListener(this);
}

public void afterTextChanged(Editable s) {
    // I don't implement this, but it is required.
}

public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    // I don't implement this, but it is required.
}

public void onTextChanged(CharSequence s, int start, int before, int count) {
    exampleFragment.updateText(editText1.getText().toString().trim());
}

public class ExampleFragment extends Fragment {

    public void updateText(String text) {
        // Perform any necessary calculations or actions
    }

}

}

【讨论】:

  • 您能否提供一段示例代码。我很困惑。
  • @Coder101 我添加了一个示例来显示我所描述的内容。请删除您的-1。希望我的例子会有所帮助。
  • 这里的关注点分离不是很好。在这种情况下,Activity 必须专门了解片段。最好为他们创建一个接口进行通信,然后如果您将片段更改为新片段,它所要做的就是实现该接口,然后您就知道它具有接收值所需的所有功能它的父活动。
  • @paul_f 你是对的,这是一个快速而肮脏的解决方案,还有很大的改进空间。您应该始终使用SOLID 原则。我相信您特别指出了使用依赖反转的机会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2022-01-04
相关资源
最近更新 更多