2017-12-08 8 views
0

私はユーザーが管理者であるかどうかに基づいていくつかのボタンを隠そうとしています。これをデータベースに追加して、trueまたはfalseを表示します。ユーザー管理者がボタンを非表示にする必要があります偽のですが、これはfirebaseからの参照に基づくボタンを隠す

を何が起こっているかではない場合OnCreate関数の起動時にこれはコードiは//

通常通りのボタンが表示されているように、私は、if文を作成しました上にあり、管理者が目に見えるトンを使用しよう invicible最初とあれば、ユーザーとしてあなたの xmlファイル使用ボタンで

 databaseUsers.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for(DataSnapshot venueSnapshot: dataSnapshot.getChildren()){ 
       User user = venueSnapshot.getValue(User.class); 

       if(user.getAdminUser() == true) 
            { 
        buttonAddProducts.setVisibility(View.VISIBLE); 
        buttonAddBeverages.setVisibility(View.VISIBLE); 
       } 
      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 
    }); 

//This is the entire oncreate 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_profile); 

     buttonAddBeverages = (Button) findViewById(R.id.buttonAddBeverages); 
     buttonAddProducts = (Button) findViewById(R.id.buttonAddProducts); 
     databaseUsers = FirebaseDatabase.getInstance().getReference("users"); 
     //initializing firebase authentication object 
     firebaseAuth = FirebaseAuth.getInstance(); 

     buttonAddProducts.setVisibility(View.GONE); 
     buttonAddBeverages.setVisibility(View.GONE); 

     //if the user is not logged in 
     //that means current user will return null 
     if(firebaseAuth.getCurrentUser() == null){ 
      //closing this activity 
      finish(); 
      //starting login activity 
      startActivity(new Intent(this, LoginActivity.class)); 
     } 

     //getting current user 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 

     //initializing views 
     textViewUserEmail = (TextView) findViewById(R.id.textViewUserEmail); 
     buttonLogout = (Button) findViewById(R.id.buttonLogout); 

     //displaying logged in user name 
     textViewUserEmail.setText("Welcome "+user.getEmail()); 

     databaseUsers.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for(DataSnapshot venueSnapshot: dataSnapshot.getChildren()){ 
        User user = venueSnapshot.getValue(User.class); 

        if(user.getAdminUser() == true) 
             { 
         buttonAddProducts.setVisibility(View.VISIBLE); 
         buttonAddBeverages.setVisibility(View.VISIBLE); 
        } 
       } 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
      } 
     }); 

     buttonLogout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //logging out the user 
       firebaseAuth.signOut(); 
       //closing activity 
       finish(); 
       //starting login activity 
       startActivity(new Intent(ProfileActivity.this, LoginActivity.class)); 
      } 
     }); 
    } 

答えて

0
Do this in reverse. First hide button, then if true show the button. 

    buttonAddProducts.setVisibility(View.GONE);     
    if(user.equals(true)) 
     buttonAddProducts.setVisibility(View.VISIBLE); 

Or you may put your code when activity start 
or in xml <Button ... android:visibility="gone"/> 
+0

私はそれを試しましたが、私は間違った人が私がそれをデバッグするときにログインして表示されています。線量は現在のユーザーの価値を得ていないようです。 – Seamy20

+0

私のコードを更新し、oncreateメソッド全体を追加しました – Seamy20

0
buttonAddProducts.setVisibility(View.INVISIBLE); 
buttonAddBeverages.setVisibility(View.INVICIBLE); 

を作成しています帽子は動作します

+0

私の問題は、作成時に、私はそれをデバッグするときに、テーブル内のすべてのユーザーをループし、いずれかの場合は、私は、現在ログインしているユーザーadminUserの詳細を表から取得するだけです。それについて行く方法がわからないtho – Seamy20

関連する問題