[英]getter always returns in android
我最近開始學習 Firebase。
將數據添加到 firebase 是成功的,但我在從 firebase 檢索數據時遇到了問題。
我用於檢索數據的 getter 方法總是返回 null。
我的MainActivity.java如下:
public class MainActivityFragment extends Fragment {
TextView time_stamp;
public MainActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView=inflater.inflate(R.layout.fragment_main, container,
false);
final TextView owner=(TextView)rootView.findViewById(R.id.owner);
time_stamp=(TextView)rootView.findViewById(R.id.time_stamp_textView);
final TextView changed_data_view=(TextView)rootView.findViewById(R.id.changedView);
Firebase mRef=new Firebase(Constants.FirebaseUrl).child("activeList");
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
POJOS pojos=new POJOS();
changed_data_view.setText(pojos.getListname());
Log.i("LIST",pojos.getListname());
Log.i("OWNER",pojos.getOwner());
owner.setText(pojos.getOwner());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
return rootView;
}
}
我的 POJO 課程如下:
public class POJOS {
public String listname;
public String owner;
public POJOS() {
}
public POJOS(String listname, String owner) {
this.listname = listname;
this.owner = owner;
}
public String getListname(){
return listname;
}
public String getOwner() {
return owner;
}
}
我的添加項目類如下:
public class Dialog extends DialogFragment {
private final String title="ADD AN ITEM";
private EditText editText;
Button addButton;
public Dialog(){
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().setTitle(title);
View rootView=inflater.inflate(R.layout.dialog_box,null);
editText=(EditText)rootView.findViewById(R.id.editText);
addButton=(Button) rootView.findViewById(R.id.addButton);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userEnteredName=editText.getText().toString();
Firebase firebase=new Firebase(Constants.FirebaseUrl);
POJOS pojos =new POJOS(userEnteredName,"ANONYMOUS USER");
firebase.child("activeList").setValue(pojos);
dismiss();
}
});
return rootView;
}
}
pojos.getListname() 和 pojos.getOwner() 始終為空。
請為我的問題提供解決方案。
提前致謝 !
嘗試更改您的onDataChange(..)
方法,如下所示:
...
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//POJOS pojos = new POJOS(); // This is create only blank object of POJOS so you are getting null value
// Get POJOS object and use the values to update the UI
POJOS pojos = dataSnapshot.getValue(POJOS.class);
changed_data_view.setText(pojos.getListname());
owner.setText(pojos.getOwner());
Log.i("LIST",pojos.getListname());
Log.i("OWNER",pojos.getOwner());
}
...
偵聽器接收包含事件發生時數據庫中指定位置的數據的DataSnapshot 。 對快照調用getValue()
返回數據的 Java 對象表示。 如果該位置不存在數據,則調用getValue()
將返回null
。
有關ValueEventListener 的更多信息,請參閱 Firebase 文檔。
在POJOS pojos=new POJOS();
后的MainActivity 中POJOS pojos=new POJOS();
您沒有為pogos對象設置任何值,而是在設置值之前嘗試獲取值。 嘗試切換POJOS pojos = new POJOS();
使用POJOS pojos = dataSnapshot.getValue(POJOS.class);
在onDataChange方法中。 它看起來像這樣:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
POJOS pojos = dataSnapshot.getValue(POJOS.class);
changed_data_view.setText(pojos.getListname());
Log.i("LIST",pojos.getListname());
Log.i("OWNER",pojos.getOwner());
owner.setText(pojos.getOwner());
}
此外,請確保Firebase Mach 中的名稱與POJOS類中的名稱相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.