Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Firebase中更新数据?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 如何在Firebase中更新数据?

Android 如何在Firebase中更新数据?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试更新数据库中产品的数量。每当我添加或扣除数量时,更改仅反映在我的应用程序上,而不会在Firebase中更新!任何帮助都将不胜感激 以下是应用程序的图片: public class Edit extends AppCompatActivity { String myKey = null; private Button removebutton, plus, minus; private int counterValue; protected void onCreate(Bundle

我正在尝试更新数据库中产品的数量。每当我添加或扣除数量时,更改仅反映在我的应用程序上,而不会在Firebase中更新!任何帮助都将不胜感激

以下是应用程序的图片:

public class Edit extends AppCompatActivity {
 String myKey = null;
private Button removebutton, plus, minus;
private int counterValue;
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit);
     removebutton = (Button) findViewById(R.id.item_detail_delete);
     plus = (Button) findViewById(R.id.item_quantity_add);
     minus = (Button) findViewById(R.id.item_quantity_remove);

     final DatabaseReference database;
     myKey = getIntent().getExtras().getString("value");
    database = FirebaseDatabase.getInstance().getReference().child("All Barcodes");
    database.child(myKey).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            TextView Barcode=(TextView) findViewById(R.id.Barcode);
            TextView Pname=(TextView) findViewById(R.id.Pname);
            TextView EntryDate=(TextView) findViewById(R.id.EntryDate);
            TextView ExpiryDate=(TextView) findViewById(R.id.ExpiryDate);
            final TextView Quantity=(TextView) findViewById(R.id.Quantity);
                String barcode = (String) dataSnapshot.child("barcode").getValue();
                String pname = (String) dataSnapshot.child("pname").getValue();
                String date = (String) dataSnapshot.child("date").getValue();
                String expiration = (String) dataSnapshot.child("expiration").getValue();
                String quantity = (String) dataSnapshot.child("quantity").getValue();
                Barcode.setText(barcode);
                Pname.setText(pname);
                EntryDate.setText(date);
                ExpiryDate.setText(expiration);
                Quantity.setText(quantity);
            counterValue = Integer.valueOf(quantity);
            plus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    counterValue ++;
                    Quantity.setText(String.valueOf(counterValue));
                }
            });
            minus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    counterValue --;
                    Quantity.setText(String.valueOf(counterValue));
                }
            });

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("The read failed: " + databaseError.getMessage());

        }
    });

     removebutton.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             database.child(myKey).removeValue();
             Intent intent = new Intent(Edit.this,Inventory.class);
             startActivity(intent);
         }
     });

}

数据库图片:

这是我的代码:

public class Edit extends AppCompatActivity {
 String myKey = null;
private Button removebutton, plus, minus;
private int counterValue;
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit);
     removebutton = (Button) findViewById(R.id.item_detail_delete);
     plus = (Button) findViewById(R.id.item_quantity_add);
     minus = (Button) findViewById(R.id.item_quantity_remove);

     final DatabaseReference database;
     myKey = getIntent().getExtras().getString("value");
    database = FirebaseDatabase.getInstance().getReference().child("All Barcodes");
    database.child(myKey).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            TextView Barcode=(TextView) findViewById(R.id.Barcode);
            TextView Pname=(TextView) findViewById(R.id.Pname);
            TextView EntryDate=(TextView) findViewById(R.id.EntryDate);
            TextView ExpiryDate=(TextView) findViewById(R.id.ExpiryDate);
            final TextView Quantity=(TextView) findViewById(R.id.Quantity);
                String barcode = (String) dataSnapshot.child("barcode").getValue();
                String pname = (String) dataSnapshot.child("pname").getValue();
                String date = (String) dataSnapshot.child("date").getValue();
                String expiration = (String) dataSnapshot.child("expiration").getValue();
                String quantity = (String) dataSnapshot.child("quantity").getValue();
                Barcode.setText(barcode);
                Pname.setText(pname);
                EntryDate.setText(date);
                ExpiryDate.setText(expiration);
                Quantity.setText(quantity);
            counterValue = Integer.valueOf(quantity);
            plus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    counterValue ++;
                    Quantity.setText(String.valueOf(counterValue));
                }
            });
            minus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    counterValue --;
                    Quantity.setText(String.valueOf(counterValue));
                }
            });

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            System.out.println("The read failed: " + databaseError.getMessage());

        }
    });

     removebutton.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             database.child(myKey).removeValue();
             Intent intent = new Intent(Edit.this,Inventory.class);
             startActivity(intent);
         }
     });

}

您应该自己更新数据库中的相关字段:

plus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        counterValue++;
        Quantity.setText(String.valueOf(counterValue));
        database.child(myKey).child("quantity").setValue(String.valueOf(counterValue));
    }
});
minus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       counterValue--;
       Quantity.setText(String.valueOf(counterValue));
       database.child(myKey).child("quantity").setValue(String.valueOf(counterValue));
    }
});

您应该自己更新数据库中的相关字段:

plus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        counterValue++;
        Quantity.setText(String.valueOf(counterValue));
        database.child(myKey).child("quantity").setValue(String.valueOf(counterValue));
    }
});
minus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       counterValue--;
       Quantity.setText(String.valueOf(counterValue));
       database.child(myKey).child("quantity").setValue(String.valueOf(counterValue));
    }
});

最简单的方法是将“保持同步”设置为true,如下所示:

DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.keepSynced(true);
这来自firebase文档


最简单的方法是将“保持同步”设置为true,如下所示:

DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.keepSynced(true);
这来自firebase文档


谢谢你,穆罕默德!我已经尝试了更新的代码!但我认为保存在数据库中的数量定义为字符串。但是代码在我的数据库中将数量保存为整数,从而导致崩溃。java.lang.ClassCastException在这种情况下,您可以将
setValue(counterValue)
更改为
setValue(String.valueOf(counterValue))
,就像我刚才在回答中所做的那样。谢谢,Mehmed!我已经尝试了更新的代码!但我认为保存在数据库中的数量定义为字符串。但是代码在我的数据库中将数量保存为整数,从而导致崩溃。java.lang.ClassCastException在这种情况下,您可以将
setValue(counterValue)
更改为
setValue(String.valueOf(counterValue))