【问题标题】:Compare firebase value with an integer将 firebase 值与整数进行比较
【发布时间】:2018-03-28 13:46:17
【问题描述】:

我正在尝试将 firebase 数据与整数进行比较,但应用程序崩溃了。 这是代码:

 Firebase myfirebase; int result = 500;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView mytextview = (TextView) findViewById(R.id.textView);
    Firebase.setAndroidContext(getApplicationContext());
    myfirebase = new Firebase("https://analog-85958.firebaseio.com/number");
    myfirebase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            String mychildtext = dataSnapshot.getValue(String.class);
            mytextview.setText(mychildtext);

            int num = Integer.parseInt(mychildtext);
            if (num == result)
            {
                Toast.makeText(getApplicationContext(),"success",Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(),"fail",Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

数据库结构:

【问题讨论】:

  • 请勿将代码发布为图片
  • 我建议你阅读 Firebase 的文档

标签: java android firebase firebase-realtime-database


【解决方案1】:

您正在尝试获取一个 String 并且您的数据库中有一个 int:

  @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            String mychildtext = dataSnapshot.getValue(String.class); //here
            mytextview.setText(mychildtext);

            int num = Integer.parseInt(mychildtext); 

首先得到这样的值:

int mychildtext = Integer.valueOf(dataSnapShot.getValue().toString());

你也可以试试这个来获取值:

int mychildtext = dataSnapshot.getValue(Integer.class);

然后:

mytextview.setText(mychildtext);

最后一部分在这里使用你的值:

int num = mychildtext;

     if (num == result)
                {
                    Toast.makeText(getApplicationContext(),"success",Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(getApplicationContext(),"fail",Toast.LENGTH_SHORT).show();
                }

编辑:我认为你的参考是错误的,这样改变它:

String url = "https://analog-85958.firebaseio.com/number";
DatabaseReference ref = FirebaseDatabase.getInstance().getReferenceFromUrl(url);
              

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView mytextview = (TextView) findViewById(R.id.textView);
    Firebase.setAndroidContext(getApplicationContext());
    ref.addValueEventListener(new ValueEventListener() { ....   

【讨论】:

  • 应用再次崩溃
  • 我认为您的参考有误,您在哪里有 DatabaseReference ?
  • 仍然崩溃
  • 它在我以字符串形式读取数据时工作。但我想将该值与整数进行比较。
  • @Override public void onDataChange(DataSnapshot dataSnapshot) { String mychildtext = dataSnapshot.getValue(String.class); mytextview.setText(mychildtext);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多