无法从Firebase-Android Studio(Java)检索数据

无法从Firebase-Android Studio(Java)检索数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我试图从数据库中读取一个值,但似乎不起作用。代码的目的是从Firebase中的用户UID中获取计数器值,这将更改图像的源。计数器在另一个活动中更改,工作正常。我觉得我很接近,但不确定下一步该怎么办。我已尝试打印出该值,但未在控制台中打印 完整免责声明,我是android开发和firebase新手,因此如果这是一个简单的错误/更正,我会提前道歉 调用数据库的活动已更新: public class Menu extends AppCompatActivity { private static

我试图从数据库中读取一个值,但似乎不起作用。代码的目的是从Firebase中的用户UID中获取计数器值,这将更改图像的源。计数器在另一个活动中更改,工作正常。我觉得我很接近,但不确定下一步该怎么办。我已尝试打印出该值,但未在控制台中打印

完整免责声明,我是android开发和firebase新手,因此如果这是一个简单的错误/更正,我会提前道歉

调用数据库的活动已更新:

public class Menu extends AppCompatActivity {
    private static final String TAG = "Menu";
    Button btn;
    public ImageView image;
    public static int counter;


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

        // Add an image
        image = findViewById(R.id.imageView2);
        image.setImageResource(R.drawable.g1);
        //image.setImageResource(getIntent().getIntExtra("myImageResource",R.drawable.g1));
       
        final FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference ref = database.getReference("counter");

        
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                menuCounter uCount = dataSnapshot.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).getValue(menuCounter.class);
                System.out.println("Simon says" + uCount.counter);
                counter = uCount.counter;

            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                System.out.println("The read failed: " + databaseError.getCode());
            }
        });

        System.out.println("Counter is: " + counter);

        if (counter == 1) {
            image.setImageResource(R.drawable.g2);
        }

        btn = findViewById(R.id.button1);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent WIP = new Intent(Menu.this, WIP.class);
                startActivity(WIP);
            }
        });
    }
}
吸气剂类:

package com.alanlyne.tbm;

public class menuCounter {
    int counter;

    public menuCounter() {
    }

    public menuCounter(int counter) {
        this.counter = counter;
    }

    public int getCounter() {
        return counter;
    }
}
更改计数器值的活动:

public class WIP extends AppCompatActivity {
    Button btn;

    DatabaseReference databaseName;

    FirebaseAuth mFirebaseAuth;
    private FirebaseAuth.AuthStateListener mAuthStateListener;

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

        databaseName = FirebaseDatabase.getInstance().getReference("counter");

        btn = findViewById(R.id.button1);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Menu.counter = 1;
                Intent act2= new Intent(WIP.this,Menu.class);
//                act2.putExtra("myImageResource", R.drawable.g2);
                startActivity(act2);

                addCounter();

            }
        });
    }

    private void addCounter() {
        Menu.counter = 1;

        String id = databaseName.push().getKey();

        menuCounter counter = new menuCounter(Menu.counter);

        databaseName.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(counter);
        }
    }
Firebase图像:


menuCounter
类中(考虑重命名为
menuCounter
),使用
int计数器
应声明为
公共整数计数器。这是因为每个属性都是在
getValue(menuCounter.class)
中直接设置的(
uCount.counter=dataSnapshot.counter
),而不使用构造函数或
getSomeVar()
setSomeVar()
函数。如果这最终解决了问题,我会把它写下来作为答案。你解决了问题吗?很抱歉耽搁了。是的,这是可行的,但由于某些原因,计数器值没有更新或打印。我已经更新了上面的代码。它在方法内部更新,而不是在方法外部更新?我把if语句移到了它里面,它工作了,但是有一点延迟。这只是从firebase加载信息吗?理想情况下,我希望数据库调用
menuCounter
类中的if statem,ent(考虑重命名为
menuCounter
以遵循)之外的
int计数器
应声明为
公共整数计数器。这是因为每个属性都是在
getValue(menuCounter.class)
中直接设置的(
uCount.counter=dataSnapshot.counter
),而不使用构造函数或
getSomeVar()
setSomeVar()
函数。如果这最终解决了问题,我会把它写下来作为答案。你解决了问题吗?很抱歉耽搁了。是的,这是可行的,但由于某些原因,计数器值没有更新或打印。我已经更新了上面的代码。它在方法内部更新,而不是在方法外部更新?我把if语句移到了它里面,它工作了,但是有一点延迟。这只是从firebase加载信息吗?理想情况下,我希望if statem,ent位于数据库调用之外