如果我有一个函数,该函数会不时获得不同的值,并且使用片段作为显示,我想在片段内更新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
答案 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");