如何从活动中更新片段TextView?

时间:2019-03-29 13:46:41

标签: android android-fragments

如果我有一个函数,该函数会不时获得不同的值,并且使用片段作为显示,我想在片段内更新TextView,因为值会有所不同,我该如何从片段中操作TextView在MainActivity内部?

要阐明更多信息:

我的MainActivity在DatabaseReference内部实现如下值:

userLoggedInRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            if (!dataSnapshot.child("office").getValue(String.class).equals("none")) {
                officeKeyLoggedIn = dataSnapshot.child("office").getValue(String.class);
                usersInOffice.child(officeKeyLoggedIn).child(userKey).setValue("").addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()){
                            /new-code/
                        }
                    }
                });
            }
        ...

因此,这是用户进入办公室并且值从“ none”更改为“ / officeKey /”的情况,此时我要调用“ / new-code /”片段,即MainActivity的显示,以将隐藏的TextView的可见性设置为VISIBLE,并将其文本设置为通知用户他现在已登录的内容。

我该如何实现?

EDIT1:MainActivity InicioFragment

1 个答案:

答案 0 :(得分:0)

在你的活动中

您必须初始化此片段(例如,作为字段):

public class MainActivity extends AppCompatActivity {

    // Instance of our fragment
    OwnFragment fragment = new OwnFragment();

}
  

记住要确实使用此实例进行交易(使用FragmentManager

在片段中:

接下来,您可以在片段中创建一个接收数据的新方法:

public class OwnFragment extends Fragment {

    // So you can pass there: View.VISIBLE, View.GONE or View.INVISIBLE
    void setVisibility(int visibility) {
        textView.setVisibility(visibility);
    }

    // Your new method
    void setNewText(String text) {
        textView.setText(text);
    }

}

再次参加活动:

您可以使用上面的Fragment实例调用此方法:

fragment.setNewText("Hello world");