Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
带Firebase的Android:DataSnapshot.getValue()抛出java.lang.IllegalArgumentException_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

带Firebase的Android:DataSnapshot.getValue()抛出java.lang.IllegalArgumentException

带Firebase的Android:DataSnapshot.getValue()抛出java.lang.IllegalArgumentException,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在编写和阅读Firebase实时数据库中的类用户。这是用户类: public class User { public String name; public int number; public String title; public String company; public String location; public Bitmap image; public String name_title_company_locati

我正在编写和阅读Firebase实时数据库中的类用户。这是用户类:

public class User {

    public String name;
    public int number;
    public String title;
    public String company;
    public String location;
    public Bitmap image;
    public String name_title_company_location;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String name, int number, String title, String company, String location, Bitmap image) {
        this.name = name;
        this.number = number;
        this.title = title;
        this.company = company;
        this.location = location;
        this.image = image;
        this.name_title_company_location = name + "_" + title + "_" +company + "_" + location;
    }
这是我的Firebase实时数据库:

users
  0
    company: "Indifair"
    image
    location: "Bangalore"
    name: "Anupam Singh"
    name_title_company_location: "Anupam Singh_Engineer_Indifair_Bangalore"
    number: 956156494
    title: "Engineer"
这段代码引发错误:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
EditText t1 = (EditText) findViewById(R.id.editText10);
EditText t2 = (EditText) findViewById(R.id.editText11);
EditText t3 = (EditText) findViewById(R.id.editText13);
EditText t4 = (EditText) findViewById(R.id.editText14);

String s1 = t1.getText().toString();
String s2 = t2.getText().toString();
String s3 = t3.getText().toString();
String s4 = t4.getText().toString();

mDatabase.child("users").orderByChild("name_title_company_location")
        .equalTo(s1 + "_" + s2 + "_" + s3 + "_" + s4)
        .addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                    User user  = dataSnapshot.getValue(User.class);
                    //ImageView im = (ImageView) findViewById(R.id.imageView);
                    //TextView tv1 = (TextView) findViewById(R.id.textView3);
                    //TextView tv2 = (TextView) findViewById(R.id.textView5);
                    ///im.setImageBitmap(user.image);
                    ///tv1.setText(user.name);
                    ///tv2.setText(user.number);


            }

            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
                //Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
            }

        });
我得到这个错误:

    java.lang.IllegalArgumentException: Service not registered: com.google.android.gms.measurement.internal.zzjc@45abe13
    at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1105)
    at android.app.ContextImpl.unbindService(ContextImpl.java:1873)
    at android.content.ContextWrapper.unbindService(ContextWrapper.java:562)
    at com.google.android.gms.common.stats.ConnectionTracker.unbindService(Unknown Source)
    at com.google.android.gms.measurement.internal.zzik.zzah(com.google.android.gms:play-services-measurement-impl@@17.2.0:240)
    at com.google.android.gms.measurement.internal.zzik.zzak(com.google.android.gms:play-services-measurement-impl@@17.2.0:257)
    at com.google.android.gms.measurement.internal.zzik.zzc(com.google.android.gms:play-services-measurement-impl@@17.2.0:319)
    at com.google.android.gms.measurement.internal.zzij.zza(com.google.android.gms:play-services-measurement-impl@@17.2.0:2)
    at com.google.android.gms.measurement.internal.zzai.run(com.google.android.gms:play-services-measurement-impl@@17.2.0:7)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at com.google.android.gms.measurement.internal.zzfy.run(com.google.android.gms:play-services-measurement-impl@@17.2.0:20)
当我注释掉
User User=dataSnapshot.getValue(User.class)时错误消失了


可能会出现什么问题?

对Firebase数据库执行查询时,可能会出现多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果列表

因此,您的
onDataChange
需要处理
DataSnapshot
可以包含多个用户的事实。您可以通过如下方式在
dataSnapshot.getChildren()
上循环来轻松完成此操作:

mDatabase.child("users").orderByChild("name_title_company_location")
    .equalTo(s1 + "_" + s2 + "_" + s3 + "_" + s4)
    .addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot userSnapshot: dataSnapshot.getChildren) {
                User user = userSnapshot.getValue(User.class);
                ...
            }
        }

对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果列表

因此,您的
onDataChange
需要处理
DataSnapshot
可以包含多个用户的事实。您可以通过如下方式在
dataSnapshot.getChildren()
上循环来轻松完成此操作:

mDatabase.child("users").orderByChild("name_title_company_location")
    .equalTo(s1 + "_" + s2 + "_" + s3 + "_" + s4)
    .addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot userSnapshot: dataSnapshot.getChildren) {
                User user = userSnapshot.getValue(User.class);
                ...
            }
        }

是的,我只是在发布我的答案后才注意到错误信息。您的代码肯定有我要解决的问题,但错误消息似乎来自其他地方。通过搜索错误消息,您可能需要一个(更新的)库版本。是的,我只是在发布我的答案后才注意到错误信息。您的代码肯定有我要解决的问题,但错误消息似乎来自其他地方。通过搜索错误消息,您可能需要一个(更新的)库版本。可能是因为模型中的
Bitmap
类型可能是因为模型中的
Bitmap
类型