【问题标题】:Firebase Database not fetching data from Firebase Database ReferenceFirebase 数据库未从 Firebase 数据库参考中获取数据
【发布时间】:2020-12-22 14:04:08
【问题描述】:

一切正常,但 DatabaseReference 没有获取数据,这就像忽略我的代码运行并且我的互联网无法正常工作请帮助我是新来的在这个社区下面是我的代码和图像。

以前它可以工作,但是因为我只是更改了一些代码以使 currentVersion >= vCode 以便即使数据库中的值是

firebase database image

MainActivity.java

public class MainActivity extends AppCompatActivity {
    TextView appName;
    FirebaseUser firebaseUser;
    String currentVersionName;
    long currentVersionCode;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        appName = findViewById(R.id.appName);
        currentVersionName = BuildConfig.VERSION_NAME;
        currentVersionCode = BuildConfig.VERSION_CODE;
        animateAppName();
        netConn();
        FirebaseAuth.getInstance();

    }

    public void applyScreenChange(){
        String sharedPerfId = "MyAppPref";
        SharedPreferences sharedPreferences = getSharedPreferences(sharedPerfId,0);
        boolean isAdvertiserLoggedIn = sharedPreferences.getBoolean("isAdvertiserLoggedIn",false);
        boolean isCreatorLoggedIn = sharedPreferences.getBoolean("isCreatorLoggedIn",false);
        if (isAdvertiserLoggedIn){
            skipSetupToAdvertiser();
        }
        else if (isCreatorLoggedIn){
            skipSetupToCreator();
        }
        else {
            newActivity();
        }
    }

    public void animateAppName(){
        appName.setTranslationY(-1000f);
        appName.animate().translationYBy(1000f).setDuration(500);
    }

    public void netConn(){
        ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        assert connectivityManager != null;
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if(networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()){
            AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
            alertDialog.setTitle("No Internet Connection");
            alertDialog.setMessage("Connect to Network and Then try again");
            alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Exit", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    MainActivity.super.onBackPressed();
                }
            });
            alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Retry", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    netConn();
                }
            });
            alertDialog.setCanceledOnTouchOutside(false);
            alertDialog.show();

        }else {

//            Check older version

//            applyScreenChange();


            DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Version");
            databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    String vName = (String) snapshot.child("latestVersionName").getValue();
                    long vCode = (long) snapshot.child("latestVersionCode").getValue();
                    if (currentVersionName.equals(vName) && currentVersionCode >= vCode){
                        applyScreenChange();

                        // TODO: 16-08-2020 add condition to open app if version is higher
                    }else {
                        Toast.makeText(MainActivity.this, "Old Version", Toast.LENGTH_SHORT).show();
                        AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
                        alertDialog.setTitle("You're on Older Version");
                        alertDialog.setMessage("This Version is no more supported, Kindly update your App to Continue");
                        alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Exit", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                MainActivity.super.onBackPressed();
                            }
                        });
                        alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Update", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
//                                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.app_link))));
                                Toast.makeText(MainActivity.this, "Kindly Search Sponso on PlayStore and Update", Toast.LENGTH_SHORT).show();
                                finish();
                            }
                        });
                        alertDialog.setCanceledOnTouchOutside(false);
                        alertDialog.show();
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError error) {

                }
            });
        }
    }

    public void newActivity(){
                Intent intent = new Intent(MainActivity.this, AdvertiserCreatorChooser.class);
                startActivity(intent);
                finish();
    }


    public void skipSetupToAdvertiser(){
        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        if (firebaseUser!=null) {
                    Intent intent = new Intent(MainActivity.this, AdvertiserHome.class);
                    startActivity(intent);
                    finish();
        }else{
                    Intent intent = new Intent(MainActivity.this, AdvertiserLoginRegister.class);
                    startActivity(intent);
                    finish();
        }
    }

    public void skipSetupToCreator(){
        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        if (firebaseUser!=null) {
                    Intent intent = new Intent(MainActivity.this, CreatorHome.class);
                    startActivity(intent);
                    finish();
        }else {
                    Intent intent = new Intent(MainActivity.this, CreatorLoginRegister.class);
                    startActivity(intent);
                    finish();
        }
    }
}

ma​​nifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.webroose.sponso">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:allowBackup="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Advertiser.AdvertiserCampaignUpdate"/>
        <activity android:name=".Advertiser.ui.main.AdvertiserSettings" />
        <activity android:name=".Creator.CreatorRecentlyChat" />
        <activity android:name=".Advertiser.AdvertiserRecentlyChat" />
        <activity android:name=".Advertiser.AdvertiserChatActivity" />
        <activity android:name=".Creator.CreatorChatActivity" />

        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="@string/app_id" />

        <activity android:name=".Creator.CreatorUserDetails" />
        <activity android:name=".Creator.CreatorList" />
        <activity android:name=".Common.AboutUs" />
        <activity
            android:name=".AdvertiserHome"
            android:label="@string/title_activity_advertiser_home"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".Advertiser.AdvertiserLoginRegister"
            android:label="@string/title_activity_advertiser_login_register"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity android:name=".Common.PrivacyPolicy" />
        <activity android:name=".Common.ChangePassword" />
        <activity android:name=".Creator.CreatorSettings" />
        <activity android:name=".Common.ChangeEmail" />
        <activity android:name=".Advertiser.AdvertiserUserDetails" />
        <activity android:name=".Advertiser.AdvertiserList" />
        <activity
            android:name=".CreatorHome"
            android:label="@string/title_activity_creator_home"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".Creator.CreatorLoginRegister"
            android:label="@string/title_activity_creator_login_register"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity android:name=".AdvertiserCreatorChooser" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />
    </application>

</manifest>

依赖

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    implementation 'com.google.android.material:material:1.2.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'com.google.firebase:firebase-database:19.4.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.navigation:navigation-fragment:2.3.0'
    implementation 'androidx.navigation:navigation-ui:2.3.0'
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'com.google.firebase:firebase-auth:19.3.2'
    implementation 'com.google.firebase:firebase-database:19.4.0'
    implementation 'com.firebaseui:firebase-ui-database:6.2.0'
    implementation 'com.google.android.gms:play-services-ads:19.3.0'
    implementation 'com.android.support:multidex:2.0.0'
    implementation 'com.google.firebase:firebase-analytics:17.5.0'
    implementation 'com.google.firebase:firebase-messaging:20.2.4'
    implementation 'com.facebook.android:audience-network-sdk:5.10.1'
}

【问题讨论】:

  • 这段代码中到底有什么不符合您的预期?
  • DatabaseReference 应该调用数据并在 String 中获取值,并且它不会从 Firebase 调用数据,就像忽略它一样。 public void onDataChange(@NonNull DataSnapshot 快照) { String vName = (String) snapshot.child("latestVersionName").getValue(); long vCode = (long) snapshot.child("latestVersionCode").getValue();
  • 首先,停止忽略错误。使用Log.d(TAG, databaseError.getMessage());。您在 logcat 中打印了一些内容吗?
  • 刚刚尝试了该日志,但没有收到任何错误,而且我与同一 firebase 帐户相关的其他应用程序也没有加载数据。 Firebase 崩溃了?还是 firebase 服务器出了什么问题?

标签: java android firebase firebase-realtime-database


【解决方案1】:

真正的问题在于 Firebase 数据库

使用 firebase 数据库检查下图

【讨论】:

    【解决方案2】:

    更改
    DatabaseReference databaseReference =FirebaseDatabase.getInstance().getReference("Version");
    致
    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Version");

    【讨论】:

    • 已经尝试过...请提供更多建议?我不想从头开始制作应用程序
    • 我看到了你之前的评论:尝试String val = snapshot.child("childName").getValue.toString(); 并尝试打印它并检查是否有任何数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多