Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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
Java Android:firebase数据库方法中的access变量_Java_Android_Firebase_Firebase Realtime Database_Builder - Fatal编程技术网

Java Android:firebase数据库方法中的access变量

Java Android:firebase数据库方法中的access变量,java,android,firebase,firebase-realtime-database,builder,Java,Android,Firebase,Firebase Realtime Database,Builder,我试图在警报对话框中显示我(成功地)从firebase获得的变量。正如我在评论中提到的,我一无所获。我的意思是我得到值的第一个声明,即“”。我做错了什么 编辑:变量名在我的类的顶部定义为publicstringname=“” 不能在onDataChange()方法之外简单地使用name的值。Firebase API是异步的,因此任何需要来自Firebase的数据的代码都需要位于onDataChange()方法中,或者从那里调用。因此,请检查副本,看看如何使用自定义回调解决此问题。有更简单的方法吗

我试图在警报对话框中显示我(成功地)从firebase获得的变量。正如我在评论中提到的,我一无所获。我的意思是我得到值的第一个声明,即
”。我做错了什么

编辑:变量名在我的类的顶部定义为
publicstringname=“”


不能在
onDataChange()
方法之外简单地使用
name
的值。Firebase API是异步的,因此任何需要来自Firebase的数据的代码都需要位于
onDataChange()
方法中,或者从那里调用。因此,请检查副本,看看如何使用自定义回调解决此问题。有更简单的方法吗?我对编程还不熟悉,但了解的不多:p如果你是初学者,这是最简单的方法。@AlexMamo谢谢你的回答。但另一个错误发生了。我的想法是用条形码扫描一些物品,并从firebase获得它们的名称。我做了你在副本上贴的事。但每次扫描新项目时,我都会得到上一个扫描项目的名称。与此类似,对同一项调用回调2次。这有什么问题?不能在
onDataChange()
方法之外简单地使用
name
的值。Firebase API是异步的,因此任何需要来自Firebase的数据的代码都需要位于
onDataChange()
方法中,或者从那里调用。因此,请检查副本,看看如何使用自定义回调解决此问题。有更简单的方法吗?我对编程还不熟悉,但了解的不多:p如果你是初学者,这是最简单的方法。@AlexMamo谢谢你的回答。但另一个错误发生了。我的想法是用条形码扫描一些物品,并从firebase获得它们的名称。我做了你在副本上贴的事。但每次扫描新项目时,我都会得到上一个扫描项目的名称。与此类似,对同一项调用回调2次。这有什么问题?
@Override
    public void handleResult(Result result) {
       AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Scan Result");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        getItemData();

       //here im trying to print the 'name' variable from getItemData(), and i get ""
        builder.setMessage(name);
        AlertDialog alert1 = builder.create();
        alert1.show();

    }

    //here i get the item from firebase 
    public void getItemData(){
        final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("Items").child(myResult);
        mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
               name = dataSnapshot.child("itemname").getValue().toString();
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(addquantityactivity.this,"there was an error",Toast.LENGTH_SHORT).show();
            }
        });
    }