我想根据从Firebase数据库获得的值来打开特定活动

时间:2019-07-08 09:05:32

标签: java android 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的新手

3 个答案:

答案 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();
            }
        }
    });