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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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 正在尝试从TextView获取值并将其发送到firebase引用,但应用程序正在崩溃_Java_Android_Firebase_Firebase Realtime Database_Textview - Fatal编程技术网

Java 正在尝试从TextView获取值并将其发送到firebase引用,但应用程序正在崩溃

Java 正在尝试从TextView获取值并将其发送到firebase引用,但应用程序正在崩溃,java,android,firebase,firebase-realtime-database,textview,Java,Android,Firebase,Firebase Realtime Database,Textview,尝试将在TextView中输入的值发送到firebase,并将其从firebase RealTime数据库中删除。但是当尝试从TextViewqrCode获取值时,应用程序会崩溃 我试图在onCreate之外清除TextView变量,但是它崩溃了。也无法在数据库.getreference(String.valueOf(qrCode))中集成TextView值 package com.vidmun.dhananjay.qrscanner; 导入androidx.annotation.NonNull

尝试将在TextView中输入的值发送到firebase,并将其从firebase RealTime数据库中删除。但是当尝试从TextView
qrCode
获取值时,应用程序会崩溃

我试图在
onCreate
之外清除TextView变量,但是它崩溃了。也无法在
数据库.getreference(String.valueOf(qrCode))中集成TextView值

package com.vidmun.dhananjay.qrscanner;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.appcompat活动;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.os.Bundle;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.firebase.database.ChildEventListener;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入org.w3c.dom.Text;
导入静态android.content.ContentValues.TAG;
公共类MainActivity扩展了AppCompatActivity{
私有静态最终字符串标记=MainActivity.class.getSimpleName();
//TextView qrCode=(EditText)findViewById(R.id.qrCode);
//向数据库写入消息
最终文本视图qrCode=(文本视图)findViewById(R.id.qrCode);
FirebaseDatabase=FirebaseDatabase.getInstance();
DatabaseReference myRef=database.getReference(String.valueOf(qrCode));
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myRef.addChildEventListener(新的MyChildEventListener());
按钮删除=(按钮)findViewById(R.id.delete);
TextView qrCode=(TextView)findViewById(R.id.qrCode);
delete.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
deleteValueFromDb();
//Toast.makeText(getApplicationContext(),“按下”,Toast.LENGTH_LONG.show();
}
});
}
public void deleteValueFromDb(){
//最终文本视图qrCode=(文本视图)findViewById(R.id.qrCode);
//final DatabaseReference myRef=database.getReference(String.valueOf(qrCode));
myRef.child(“0”).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.exists()){
dataSnapshot.getRef().removeValue();
Toast.makeText(getApplicationContext(),“可以吃”,Toast.LENGTH\u LONG.show();
}否则{
Toast.makeText(getApplicationContext(),“已经吃过”,Toast.LENGTH_LONG.show();
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
抛出databaseError.toException();
}
});
}
}
类MyChildEventListener实现ChildEventListener{
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
Log.i(标记“childAdded”+dataSnapshot.toString());
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
Log.i(标记“childChanged”+dataSnapshot.toString());
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
Log.i(标记“childRemoved”+dataSnapshot.toString());
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
Log.i(标记“childMoved”+dataSnapshot.toString());
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Log.i(标记“childMoved”+databaseError.getMessage());
}
}

预期-TextView的值应由GetRefresents发送。

要修复崩溃,您可以这样编写代码:

final TextView qrCode;
FirebaseDatabase database;
DatabaseReference myRef;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button delete = (Button) findViewById(R.id.delete);
    qrCode = (TextView) findViewById(R.id.qrCode);
    qrCode.setText("qr code value"); // get value of qr code and set here
    database = FirebaseDatabase.getInstance();
    myRef = database.getReference(String.valueOf(qrCode.getText()));
    myRef.addChildEventListener(new MyChildEventListener());

    delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            deleteValueFromDb();
            //Toast.makeText(getApplicationContext() , "Pressed", Toast.LENGTH_LONG).show();

        }
    });
}

更新了qrCode.getText()的代码,正如第二个答案所提到的。

要修复崩溃,您可以这样编写代码:

final TextView qrCode;
FirebaseDatabase database;
DatabaseReference myRef;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button delete = (Button) findViewById(R.id.delete);
    qrCode = (TextView) findViewById(R.id.qrCode);
    qrCode.setText("qr code value"); // get value of qr code and set here
    database = FirebaseDatabase.getInstance();
    myRef = database.getReference(String.valueOf(qrCode.getText()));
    myRef.addChildEventListener(new MyChildEventListener());

    delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            deleteValueFromDb();
            //Toast.makeText(getApplicationContext() , "Pressed", Toast.LENGTH_LONG).show();

        }
    });
}

更新了qrCode.getText()的代码,因为第二个答案提到了它。

在活动的onCreate方法中添加此代码-

private TextView qrCode;
private DatabaseReference myRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       qrCode = (TextView) findViewById(R.id.qrCode);
       FirebaseDatabase database = FirebaseDatabase.getInstance();
       myRef = database.getReference(String.valueOf(qrCode.getText()));

    }
并且还使用-

qrCode.getText() 

要获取TextView的文本。

请在活动的onCreate方法中添加此代码-

private TextView qrCode;
private DatabaseReference myRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       qrCode = (TextView) findViewById(R.id.qrCode);
       FirebaseDatabase database = FirebaseDatabase.getInstance();
       myRef = database.getReference(String.valueOf(qrCode.getText()));

    }
并且还使用-

qrCode.getText() 

获取文本视图的文本。

您可以在日志上发送错误吗?您可以在日志上发送错误吗?