ボタンのonClick
メソッドでfirebaseデータベースリスナをアタッチすることはできますか?onclickメソッドのFirebase addListener
onClick
メソッドにdatareference.addValueEventListener
を入れましたが、ボタンをクリックしてfirebaseの値を更新しようとするとクラッシュします。
新しいオブジェクト全体を作成し、setvalue
を使用して古い値を置き換えますか?私の場合、私は、ユーザーのポイントを更新すると、ここに私のonClickメソッドは、ここで
public void itemClick(View view) {
int position;
position = (Integer) view.getTag();
if (taskList.get(position).getWorker()!=null && taskList.get(position).getWorker().compareTo(userEmail)==0) {
if (taskList.get(position).getStates().compareTo("COMPLETE")==0)
Toast.makeText(getContext(), getString(R.string.already_complete), Toast.LENGTH_LONG).show();
taskList.get(position).setStates("COMPLETE");
db.updateStates(taskList.get(position).getStates(), taskList.get(position).getName());
Double awardpoint = taskList.get(position).getPoints();
update(awardpoint);
search();
Toast.makeText(getContext(), getString(R.string.successful_complete), Toast.LENGTH_LONG).show();
}else
Toast.makeText(getContext(), getString(R.string.fail_complete), Toast.LENGTH_LONG).show();
}
である私の更新方法ですが、私はここに何を入れてdidntの、それはまだ
private void update (Double point){
databaseReference.child("points").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
をクラッシュ} はここにここに私のonCreateメソッド
public void onCreate(){
currentUser = FirebaseAuth.getInstance().getCurrentUser();
String curren_uid = currentUser.getUid();
databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(curren_uid);
}
で例外であり、それはNULLポインタ例外がありますようです。 私はstackOverflowでsimliarの質問を見ました。そして、私は "私が興味を持っているビジネスだけを聞いてください"と言いますが、私の参考文献は特定のuidを持つユーザを指しています。
12-06 20:17:47.401 4399-4399/ca.uottawa.leyaoli.seg2105_final_project E/AndroidRuntime: FATAL EXCEPTION: main
Process: ca.uottawa.leyaoli.seg2105_final_project, PID: 4399
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference
at ca.uottawa.leyaoli.seg2105_final_project.Tab2.update(Tab2.java:161)
at ca.uottawa.leyaoli.seg2105_final_project.Tab2.itemClick(Tab2.java:153)
at ca.uottawa.leyaoli.seg2105_final_project.TaskListAdapter.onClick(TaskListAdapter.java:93)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
エラーメッセージまたはスタックトレースを入力してください。 –
はい可能です –