Firebase ui recyclerview-在使用Firebase之前,需要使用Firebase.setAndroidContext()设置Android上下文

Firebase ui recyclerview-在使用Firebase之前,需要使用Firebase.setAndroidContext()设置Android上下文,android,firebase,android-recyclerview,firebaseui,Android,Firebase,Android Recyclerview,Firebaseui,我想要firebase数据库中的所有项目,所以我使用recyclerview填充这些项目。调用recylerview的活动时,应用程序崩溃并出现致命错误 这是我的密码 我的java文件 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.wi

我想要firebase数据库中的所有项目,所以我使用recyclerview填充这些项目。调用recylerview的活动时,应用程序崩溃并出现致命错误

这是我的密码

我的java文件

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;

import com.firebase.client.Firebase;
import com.firebase.geofire.GeoFire;
import com.firebase.ui.FirebaseListAdapter;
import com.firebase.ui.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class RequestPendingActivity extends AppCompatActivity {

RecyclerView RequestListView;
Firebase ref = new Firebase("https://simplyparc.firebaseio.com/Valet Requests Location");
private DatabaseReference mDatabase;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_request_pending);
    RequestListView = (RecyclerView) findViewById(R.id.RequestListView);
    RequestListView.setHasFixedSize(true);
    RequestListView.setLayoutManager(new LinearLayoutManager(this));


    GeoFire geoFire = new GeoFire(mDatabase);


}

@Override
protected void onStart(){
    super.onStart();
    FirebaseRecyclerAdapter<String, MessageViewHolder> adapter = new FirebaseRecyclerAdapter<String, MessageViewHolder>(String.class, android.R.layout.two_line_list_item, MessageViewHolder.class, ref) {
        @Override
        protected void populateViewHolder(MessageViewHolder messageViewHolder, String s, int i) {
            messageViewHolder.mText.setText(s);
        }
    };
    RequestListView.setAdapter(adapter);

}

public static class MessageViewHolder extends RecyclerView.ViewHolder{
    TextView mText;

    public MessageViewHolder(View v){
        super(v);
        mText = (TextView) v.findViewById(android.R.id.text1);
    }
}

}
导入android.support.v7.app.app活动;
导入android.os.Bundle;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.view.view;
导入android.widget.ListView;
导入android.widget.TextView;
导入com.firebase.client.firebase;
导入com.firebase.geofire.geofire;
导入com.firebase.ui.FirebaseListAdapter;
导入com.firebase.ui.FirebaseRecyclerAdapter;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
公共类RequestPendingActivity扩展了AppCompatingActivity{
RecyclerView请求列表视图;
Firebase ref=新Firebase(“https://simplyparc.firebaseio.com/Valet 请求(地址);
私有数据库参考数据库;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u request\u pending);
RequestListView=(RecyclerView)findViewById(R.id.RequestListView);
setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(this));
GeoFire GeoFire=新的GeoFire(mDatabase);
}
@凌驾
受保护的void onStart(){
super.onStart();
FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(String.class,android.R.layout.two\u line\u list\u项,MessageViewHolder.class,ref){
@凌驾
受保护的void populateViewHolder(MessageViewHolder MessageViewHolder,字符串s,int i){
messageViewHolder.mText.setText;
}
};
setAdapter(适配器);
}
公共静态类MessageViewHolder扩展了RecyclerView.ViewHolder{
文本视图多行文字;
公共消息视图持有者(视图v){
超级(五);
mText=(TextView)v.findviewbyd(android.R.id.text1);
}
}
}
我的android清单文件

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".FirstActivity"
        android:theme="@style/AppTheme.NoActionBar"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".PendingSelectorActivity"
        android:label="Select Pending task"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".RequestPendingActivity"
        android:label="Pending Request"
        android:screenOrientation="portrait"/>
    <!--
         The API key for Google Maps-based APIs is defined as a string resource.
         (See the file "res/values/google_maps_api.xml").
         Note that the API key is linked to the encryption key used to sign the APK.
         You need a different API key for each encryption key, including the release key that is used to
         sign the APK for publishing.
         You can define the keys for the debug and release targets in src/debug/ and src/release/. 
    -->
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key"/>

    <activity
        android:name=".RequestAcceptMapActivity"
        android:label="@string/title_activity_request_accept_map"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".DropOffActivity"
        android:label="Drop-Off Request"
        android:screenOrientation="portrait"/>


</application>

运行时出现致命错误

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.zuke.zukevalet, PID: 9243
              java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zuke.zukevalet/com.example.zuke.zukevalet.RequestPendingActivity}: java.lang.RuntimeException: You need to set the Android context using Firebase.setAndroidContext() before using Firebase.
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
                  at android.app.ActivityThread.-wrap12(ActivityThread.java)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
               Caused by: java.lang.RuntimeException: You need to set the Android context using Firebase.setAndroidContext() before using Firebase.
                  at com.firebase.client.core.Context.getPlatform(Context.java:45)
                  at com.firebase.client.core.Context.ensureLogger(Context.java:218)
                  at com.firebase.client.core.Context.initServices(Context.java:105)
                  at com.firebase.client.core.Context.freeze(Context.java:92)
                  at com.firebase.client.core.RepoManager.getLocalRepo(RepoManager.java:55)
                  at com.firebase.client.core.RepoManager.getRepo(RepoManager.java:19)
                  at com.firebase.client.Firebase.<init>(Firebase.java:172)
                  at com.firebase.client.Firebase.<init>(Firebase.java:177)
                  at com.firebase.client.Firebase.<init>(Firebase.java:155)
                  at com.example.zuke.zukevalet.RequestPendingActivity.<init>(RequestPendingActivity.java:21)
                  at java.lang.Class.newInstance(Native Method)
                  at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
                  at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:154) 
                  at android.app.ActivityThread.main(ActivityThread.java:6077) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
E/AndroidRuntime:致命异常:主
流程:com.example.zuke.zukevalet,PID:9243
java.lang.RuntimeException:无法实例化活动组件信息{com.example.zuke.zukevalet/com.example.zuke.zukevalet.RequestPendingActivity}:java.lang.RuntimeException:在使用Firebase之前,需要使用Firebase.setAndroidContext()设置Android上下文。
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:154)
位于android.app.ActivityThread.main(ActivityThread.java:6077)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
原因:java.lang.RuntimeException:在使用Firebase之前,需要使用Firebase.setAndroidContext()设置Android上下文。
位于com.firebase.client.core.Context.getPlatform(Context.java:45)
位于com.firebase.client.core.Context.ensureLogger(Context.java:218)
位于com.firebase.client.core.Context.initServices(Context.java:105)
位于com.firebase.client.core.Context.freeze(Context.java:92)
位于com.firebase.client.core.RepoManager.getLocalRepo(RepoManager.java:55)
位于com.firebase.client.core.RepoManager.getRepo(RepoManager.java:19)
位于com.firebase.client.firebase。(firebase.java:172)
位于com.firebase.client.firebase。(firebase.java:177)
位于com.firebase.client.firebase。(firebase.java:155)
在com.example.zuke.zukevalet.RequestPendingActivity上。(RequestPendingActivity.java:21)
位于java.lang.Class.newInstance(本机方法)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1078)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:154)
位于android.app.ActivityThread.main(ActivityThread.java:6077)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
W/DynamicModule:未找到com.google.firebase.auth的本地模块描述符类。

我哪里错了?

在异常消息中:

在使用Firebase之前,需要使用Firebase.setAndroidContext()设置Android上下文


:

要引用(第4步),请执行以下操作:

Firebase库必须使用Android
上下文初始化一次。这必须在创建任何Firebase引用之前发生
或者用过

创建
public class MyApplication extends android.app.Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Firebase.setAndroidContext(this);
    }
}
<application 
        android:label="@string/app_name"
        android:name=".MyApplication">
...
</application>