从活动中更新片段中的textView [英] Update textView in Fragment from Activity

查看:62
本文介绍了从活动中更新片段中的textView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Fragment中有3个TextView.

I have 3 TextView in Fragment..

在MainActivity中,我有一种方法,每10秒生成3个字符串.

In MainActivity I have method which generate 3 string every 10 seconds.

现在我想从活动中更新TextView,但是我不知道如何.

And now I want to update TextViews from activity, but I don't know how.

有人可以给我建议吗?

推荐答案

可以在您的活动中使用接口,并在生成字符串时将参数传递到片段中来实现:

It could be achieved using an interface in your activity, and passing that parameter to your fragment whenever the string is generated:

public class MainActivity extends AppCompatActivity {
private OnGenerateStringListener onGenerateStringListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    onGenerateStringListener = (OnGenerateStringListener) this;

    onStartGenerateStringFragment();

    try {
        generateString();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}

private void generateString() throws InterruptedException {

    // After string a is generated
    String a = "test one";
    onGenerateStringListener.onGeneratedString(a);

    // Sleep 10 secs
    Thread.sleep(10000);

    String b = "test Two";
    onGenerateStringListener.onGeneratedString(b);

    // Sleep 10 secs
    Thread.sleep(10000);

    String c = "test Three";
    onGenerateStringListener.onGeneratedString(c);

}

private void onStartGenerateStringFragment() {
 //Method to launch your fragment
}    

interface OnGenerateStringListener {
    void onGeneratedString(String string);
}

}

这是您的 Fragment 类:

public class FragmentTextView extends Fragment implements MainActivity.OnGenerateStringListener{

    private View view;
    private TextView textViewOne;
    private TextView textViewTwo;
    private TextView textViewThree;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        if (view != null) {
            ViewGroup group = (ViewGroup) view.getParent();
            if (group != null) {
                group.removeView(view);
            }
        } else {
            view = inflater.inflate(R.layout.fragment_layout, container, false);
            textViewOne = view.findViewById(R.id.textViewOne);
            textViewTwo = view.findViewById(R.id.textViewTwo);
            textViewThree = view.findViewById(R.id.textViewThree);
        }
        return view;
    }


    @Override
    public void onGeneratedString(String string) {
        switch (string) {
            // Use a switch case to determine which text view gets what parameters
            // for the sake of the example, I just passed a dummy text view input
            case "test one":
                textViewOne.setText(string);
                break;
            case "test Two":
                textViewTwo.setText(string);
                break;
            case "test Three":
                textViewThree.setText(string);
                break;
        }
    }
}

这篇关于从活动中更新片段中的textView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆