我设置FirebaseAdapterUI时应用程序崩溃

时间:2017-02-09 17:19:43

标签: android firebase firebase-realtime-database firebaseui

当我在Firebase适配器UI中收到邮件时,ChatActivity崩溃了。当我将其设置为simple_list_item_1布局时,它可以正常工作,但是当我设置了两个或更多属性时,应用程序在收到消息时崩溃。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseListAdapter;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class ProfileAcrivity extends AppCompatActivity {
    Button log_out;
    FirebaseAuth firebaseAuth;
    DatabaseReference databaseReference;
    Button send;
    EditText messgae;
    ListView messagelist;
    FirebaseListAdapter<Chat>firebaseListAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile_acrivity);
        firebaseAuth = FirebaseAuth.getInstance();
        log_out = (Button) findViewById(R.id.log_out);
        send= (Button) findViewById(R.id.send);
        messgae= (EditText) findViewById(R.id.mess_text);
        messagelist= (ListView) findViewById(R.id.mess_list);

        if (firebaseAuth.getCurrentUser() == null) {
            finish();
            startActivity(new Intent(getApplicationContext(), Login.class));
        }
        databaseReference= FirebaseDatabase.getInstance().getReference().child("group");

        log_out.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                logout();
            }
        });
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                messageSend();
            }
        });

        messageRecieved();


    }

    void logout() {
        firebaseAuth.signOut();
        finish();
        startActivity(new Intent(getApplicationContext(), Login.class));
    }

    void messageSend()
    {
        databaseReference.push().setValue(new Chat(messgae.getText().toString(),firebaseAuth.getCurrentUser().getEmail()));
        messgae.setText(" ");
    }
    void messageRecieved()
    {

        firebaseListAdapter=new FirebaseListAdapter<Chat>(this,Chat.class,android.R.layout.two_line_list_item,databaseReference) {
            @Override
            protected void populateView(View v, Chat model, int position) {
                ((TextView) v.findViewById(android.R.id.text1)).setText(model.getName());
                ((TextView) v.findViewById(android.R.id.text2)).setText(model.getMessage());
            }
        };
        messagelist.setAdapter(firebaseListAdapter);
    }
}

这是我的Chat.java文件

    public class Chat {
    String message;
    String name;
    //String time;

    public Chat(String message,String user)
    {
        this.message=message;
        this.name=user;
    }



    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

堆栈追踪:

02-10 01:15:07.106 15809-15809/a52.puri.fbkunal.com.firebase E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: a52.puri.fbkunal.com.firebase, PID: 15809
                                                                           com.google.firebase.database.DatabaseException: Class a52.puri.fbkunal.com.firebase.Chat is missing a constructor with no arguments
                                                                               at com.google.android.gms.internal.zzbqi$zza.zze(Unknown Source)
                                                                               at com.google.android.gms.internal.zzbqi$zza.zzaG(Unknown Source)
                                                                               at com.google.android.gms.internal.zzbqi.zze(Unknown Source)
                                                                               at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                                                                               at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
                                                                               at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                                               at com.firebase.ui.database.FirebaseListAdapter.parseSnapshot(FirebaseListAdapter.java:127)
                                                                               at com.firebase.ui.database.FirebaseListAdapter.getItem(FirebaseListAdapter.java:116)
                                                                               at com.firebase.ui.database.FirebaseListAdapter.getView(FirebaseListAdapter.java:146)
                                                                               at android.widget.AbsListView.obtainView(AbsListView.java:2306)
                                                                               at android.widget.ListView.makeAndAddView(ListView.java:1811)
                                                                               at android.widget.ListView.fillDown(ListView.java:697)
                                                                               at android.widget.ListView.fillFromTop(ListView.java:763)
                                                                               at android.widget.ListView.layoutChildren(ListView.java:1627)
                                                                               at android.widget.AbsListView.onLayout(AbsListView.java:2162)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
                                                                               at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:437)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
                                                                               at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
                                                                               at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
                                                                               at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
                                                                               at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
                                                                               at android.view.View.layout(View.java:14981)
                                                                               at android.view.ViewGroup.layout(ViewGroup.java:4790)
                                                                               at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1998)
                                                                               at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1753)
                                                                               at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1006)
                                                                               at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5652)
                                                                               at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
                                                                               at android.view.Choreographer.doCallbacks(Choreographer.java:574)
                                                                               at android.view.Choreographer.doFrame(Choreographer.java:544)
                                                                               at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
                                                                               at android.os.Handler.handleCallback(Handler.java:733)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:136)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5433)
                                                                               at java.lang.reflect.Method.invokeNative(Native Method)
                                                                               at java.lang.reflect.Method.invoke(Method.java:515)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                                                                               at dalvik.system.NativeStart.main(Native Method)
02-10 01:15:11.770 15809-15850/a52.puri.fbkunal.com.firebase W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.

1 个答案:

答案 0 :(得分:3)

创建一个

类型的构造函数
Chat(){} 

在聊天课程中。

Firebase需要此默认构造函数。由于你有一个参数化的,你需要显式声明没有参数的构造函数,因为编译器将不再为你做这个。