我想根据我从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的新手
答案 0 :(得分:1)
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();
}
答案 1 :(得分:0)
首先,您在Textview上显示的Firebase返回的值是多少?
第二,更喜欢使用方法String#equals()
比较字符串。
使用if(n=="yes")
代替if(n.equals("yes"))
答案 2 :(得分:0)
您正在从另一个thextview获取文本,并且在比较String值时,请勿使用“ ==”来使用此“ .equals(” text“)”进行字符串比较:-
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String n=mValueView.getText().toString();
if(n.equals("yes"))
{
func1();
}
else
{
func2();
}
}
});