2017-11-19 8 views
0

こんにちは。私は自分のコードについて誰かに相談したい。私は 私のアプリに着色機能を適用したいと思います。AndroidベースのFirebaseデータベースの値を取得する

それはその時だとき、人がボタンを押す:

  • GREEN押されたとき、それはBEING HOUSEKEPT

  • YELLOW状態にデータベースに値を更新状態がREADY FOR INSPECTION RoomStatus

  • を送信REDプレス時の状態READY FOR HOUSEKEEPING RoomStatus

ハウスキーパーのユーザーがハウスキーパーのためにアクセスできないというユーザーを制限しようとしたとき、私はそれを実装したいコードのどこかに挿入しました。

私はここでループしています。誰かが私が間違っていた場所を教えてくれますか?ここで

は私のコードです:

 Button room1; 
     private DatabaseReference mFirebaseDatabase, mFirebaseDatabase1, mFirebaseDatabase1room; 
     private FirebaseDatabase mFirebaseInstance; 
     private DatabaseReference referenceroom1; 
     private String roomStat; 



     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_navi_to_scan2); 
      mFirebaseInstance = FirebaseDatabase.getInstance(); 
      mFirebaseDatabase1 = mFirebaseInstance.getReference("Rooms"); 
      mFirebaseDatabase = mFirebaseInstance.getReference("Users"); 
      mFirebaseDatabase1room = mFirebaseInstance.getReference("Rooms").child("Room1"); 
      referenceroom1 = mFirebaseDatabase1.child("Room1").child("RoomStatus"); 

      room1 = (Button) findViewById(R.id.rm1Btn); 




      mFirebaseDatabase1.child("Room1").addValueEventListener(new ValueEventListener() { //attach listener 

       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { //something changed! 


        for (DataSnapshot locationSnapshot : dataSnapshot.getChildren()) { 
         String location = locationSnapshot.getValue().toString(); 

         if (location.equals("READY FOR HOUSEKEEPING")) { 
          room1.setBackgroundColor(Color.GREEN); 
          roomStat = "Green"; 
         } else if (location.equals("BEING HOUSEKEPT")) { 
          room1.setBackgroundColor(Color.YELLOW); 
          roomStat = "Yellow"; 
         } else { 
          room1.setBackgroundColor(Color.RED); 
          roomStat = "Red"; 
         } 


         if (roomStat.equals("Green")) { 

          room1.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View view) { 
            String message = "BEING HOUSEKEPT"; 
            DatabaseReference reference = mFirebaseDatabase1.child("Room1").child("RoomStatus"); 
            reference.setValue(message); 
            Intent next1 = new Intent(getApplicationContext(), ReaderActivity3.class); 
            startActivity(next1); 
           } 
          }); 


         } else if (roomStat.equals("Yellow")) { 
          room1.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View view) { 
            String message = "READY FOR INSPECTION"; 
            DatabaseReference reference = mFirebaseDatabase1.child("Room1").child("RoomStatus"); 
            reference.setValue(message); 
            Intent next1 = new Intent(getApplicationContext(), ReaderActivity2.class); 
            startActivity(next1); 




           } 
          }); 

         } else { 
          room1.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View view) { 
            String message = "READY FOR HOUSEKEEPING"; 
            DatabaseReference reference = mFirebaseDatabase1.child("Room1").child("RoomStatus"); 
            reference.setValue(message); 
            Intent next1 = new Intent(getApplicationContext(), ReaderActivity.class); 
            startActivity(next1); 



            //I ALSO WANT TO PUT A CONDITION HERE FETCHING userType from Structure 
            // mFirebaseDatabase = mFirebaseInstance.getReference("Users").child("userKey"); 
            //but doing this would mean that I would have to put a listener inside, would that be okay? I tried when this 
            //was working at first but it didin't and now the whole thing is not working 


           } 
          }); 

         } 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { //update UI here if error occurred. 

       } 
      }); 



     } 

は、ここに私の構造です:

screenshot 1

screenshot 2

screenshot 3

は、あなたは私が問題のWi何特定するのに役立ちます私はこれをどのように実装しましたか?

enter image description here

+1

見つけることができますか?そのデータを使って新しいスクリーンショットを追加できますか? –

+0

@Alex Mamo私は質問pelaseを編集した写真を参照してください –

答えて

0

私が間違って何も見えない、デバッグしてみてください。今日、特にクラウドデータベースに接続しているとき、Androidはバグです。実行ボタンの左側にはバグがあります。デバッグ。

あなたの文字列であるlocationを表示して、データベースから適切な情報を引き出したかどうかを確認することができます。ログを使用できます。ガイドはROOM1から子どもたちの中にある何かここ

https://developer.android.com/studio/debug/am-logcat.html

関連する問題