首页 > 解决方案 > 我想根据从我的 firebase 数据库中获得的值打开一个特定的活动

问题描述

我想根据从 firebase 实时数据库中检索到的数据打开一个特定的活动......

    Firebase.setAndroidContext(this);
    mRef=new Firebase("https://test-new-f2637.firebaseio.com/Name");
    mValueView=(TextView) findViewById(R.id.valueView);
    btn=(Button) findViewById(R.id.button);
    mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            value = dataSnapshot.getValue(String.class);
            mValueView.setText(value);
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String n=mValueField.getText().toString();
            if(n=="yes")
            {
                func1();
            }
            else
            {
                func2();
            }
        }
    });
}
 public void func1()
 {
     Intent intent = new Intent(this, first.class);
     startActivity(intent);
 }

public void func2()
{
    Intent intent = new Intent(this, second.class);
    startActivity(intent);
    }
}

如果我从 firebase 数据库中检索到“是”,那么应该打开第一个活动,否则应该打开第二个活动。

但问题是,通过将值检索为“是”,第二个活动也正在打开

PS:-我是android和firebase的新手

标签: javaandroidfirebase

解决方案


n=="yes"永远是假的

阅读此https://www.codejava.net/coding/10-common-mistakes-every-beginner-java-programmer-makes

https://www.codejava.net/coding/10-common-mistakes-every-beginner-java-programmer-makes#Comparison

== 运算符在物理上比较两个对象(它们的内存地址),而 equals() 方法在语义上比较两个对象(它们的信息)。在大多数情况下,我们应该使用 equals() 方法有意义地比较两个对象。

尝试:

        if("yes".equals(n)) {
            func1();
        } else {
            func2();
        }

推荐阅读