getText在TextView上返回null值

时间:2018-05-09 12:31:59

标签: android

我的应用中有一个没有初始值的TextView。此TextView使用Firebase dataSnapshot值进行更新。现在,问题是这个TextView即使用datasnapshot值更新它也会返回null值。 我的逻辑是,我需要将我在TextView中更新的先前值与新的dataSnapshot值进行比较。如果两个值都不同,我需要发送通知。 那么如何从使用Firebase dataSnapshot更新的TextView中获取TextView值? 或者最简单的方法是什么?

编辑:

这是我的代码

  //This view is initialised in onCreate. Adding just for reference
  TextView tv= view.findViewbyId(R.id.mytextview);

  mFirebaseDatabaseInstance.getReference("mgs").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //    Log.d(TAG, "App title updated");

                TextView tv= getActivity().findViewbyId(R.id.mytextview);
                String newValue = dataSnapshot.getValue(String.class);

                tv.setText(bhaw);       

            if (!newValue.equals(tv)) {

                sendNotification("msg");

            }

1 个答案:

答案 0 :(得分:0)

您可以尝试此操作来初始化文本视图。

<强> Fragment.java

public class DemoFragment extends Fragment {

TextView tv;

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_demo, container, false);
    return view;
}

 @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    tv = view.findViewById(R.id.mytextview);
  }
}

这是文本视图初始化的完成方式。您需要通过片段视图初始化textview。像这样 tv = view.findViewById(R.id.mytextview); 来自onViewCreated()方法中View类的对象。

您正在尝试按上下文初始化文本视图,这就是您遇到此问题的原因。

希望它对你有所帮助。