【问题标题】:Error Unfortunatly , app has stopped when i use FirebaseUI错误不幸的是,当我使用 FirebaseUI 时应用程序已停止
【发布时间】:2019-11-25 11:03:00
【问题描述】:

我在编写我的 Users 类和我的 UserActivity 类时遇到问题,我想使用 firebase-ui-database 来执行此操作,但会出现一些错误我的应用程序在我运行时停止了

这是我的代码

用户

public class Users {
    public Users()
    {
    }
    public Users(String name, String image, String status) {
        this.name = name;
        this.image = image;
        this.status = status;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String name ;
    public String image;
    public String status;
}

用户活动

public class UsersActivity extends AppCompatActivity {

    private Toolbar mToolbar;
    private RecyclerView mUsersList;
    private DatabaseReference mUsersDataBase;

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

        mToolbar=(Toolbar) findViewById(R.id.users_appBar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setTitle("All Users");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        mUsersDataBase = FirebaseDatabase.getInstance().getReference().child("Users");


        mUsersList = (RecyclerView) findViewById(R.id.users_list);
        mUsersList.setHasFixedSize(true);
        mUsersList.setLayoutManager(new LinearLayoutManager(this));

    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerOptions<Users> options =
                new FirebaseRecyclerOptions.Builder<Users>()
                        .setQuery(mUsersDataBase,Users.class)
                        .setLifecycleOwner(this)
                        .build();

        FirebaseRecyclerAdapter<Users,UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                return new UsersViewHolder(LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.users_single_layout, parent, false));
            }
            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
                holder.setName(model.getName());
            }
        };
        mUsersList.setAdapter(firebaseRecyclerAdapter);
    }
    public static class UsersViewHolder extends RecyclerView.ViewHolder
    {
        View mView;
        public UsersViewHolder( View itemView) {
            super(itemView);

            mView = itemView;
        }
        public void setName(String name){
            TextView userNameView =(TextView)  mView.findViewById(R.id.user_single_name);
            userNameView.setText(name);
        }
    }
}

我尝试在 UserActivity 中隐藏此代码,但仍然无法解决问题

    @Override
    protected void onStart() {
        super.onStart();


        FirebaseRecyclerOptions<Users> options =
                new FirebaseRecyclerOptions.Builder<Users>()
                        .setQuery(mUsersDataBase,Users.class)
                        .setLifecycleOwner(this)
                        .build();


        FirebaseRecyclerAdapter<Users,UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                return new UsersViewHolder(LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.users_single_layout, parent, false));
            }
            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
                holder.setName(model.getName());
            }
        };
        mUsersList.setAdapter(firebaseRecyclerAdapter);
    }
    public static class UsersViewHolder extends RecyclerView.ViewHolder
    {
        View mView;
        public UsersViewHolder( View itemView) {
            super(itemView);

            mView = itemView;
        }
        public void setName(String name){
            TextView userNameView =(TextView)  mView.findViewById(R.id.user_single_name);
            userNameView.setText(name);
        }
    }

我认为是 Android manifestbuild.gradle 中的问题,所以我会在这里发布,希望有人可以帮助我

这里是清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.doanltdd">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".UsersActivity"></activity>
        <activity android:name=".StatusActivity" />
        <activity android:name=".SettingActivity" />
        <activity android:name=".RegisterActivity" />
        <activity android:name=".LoginActivity" />
        <activity android:name=".StartActivity" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
            android:theme="@style/Base.Theme.AppCompat" />
    </application>

</manifest>

这里是我的 Build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.google.firebase:firebase-auth:16.0.5'
    implementation 'com.google.firebase:firebase-database:16.0.4'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation 'com.google.firebase:firebase-core:16.0.4'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'de.hdodenhof:circleimageview:3.0.1'
    api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.google.firebase:firebase-storage:16.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.firebaseui:firebase-ui-database:6.1.0'
}

这里LogCat

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.doanltdd, PID: 28765
    java.lang.NoSuchMethodError: No virtual method setTokenProvider(Lcom/google/firebase/internal/InternalTokenProvider;)V in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/com.example.doanltdd-2/base.apk)
        at com.google.firebase.auth.zzp.create(Unknown Source)
        at com.google.firebase.components.ComponentRuntime.lambda$new$0(com.google.firebase:firebase-common@@19.2.0:70)
        at com.google.firebase.components.ComponentRuntime$$Lambda$1.get(com.google.firebase:firebase-common@@19.2.0)
        at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-common@@19.2.0:55)
        at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-common@@19.2.0:159)
        at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@19.2.0:561)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.2.0:303)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.2.0:267)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.2.0:252)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@19.2.0:51)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1696)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1671)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@19.2.0:45)
        at android.app.ActivityThread.installProvider(ActivityThread.java:4999)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4594)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534)
        at android.app.ActivityThread.access$1500(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

感谢阅读

【问题讨论】:

  • &lt;application android:name=".XYZApplication" android:allowBackup="true" .../&gt; 在您初始化 Firebase 的清单中添加应用程序文件 FirebaseApp.initializeApp(this);

标签: android firebase firebase-realtime-database firebaseui


【解决方案1】:

我认为您没有在 UserActivity 中初始化 firebase。你必须以这种方式初始化它。FirebaseApp.initializeApp(this);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多