0

Google Firebase認証用のログアウトとして[ナビゲーションバー]ボタンを使用したいと思います。私はすでにボタンを持っており、そのボタンをサインアウトとして使用していますが、今はボトムナビバーボタンをサインアウトボタンとして使用したいと思います。インテントが直接作業していない、ただLogOutオプションのItemを追加し、それ下のナビゲーションバーボタンとしてサインアウトgoogle firebase

public class second extends AppCompatActivity { 
private Button mlogout; 




private FirebaseAuth mAuth; 
private FirebaseAuth.AuthStateListener mAuthListener; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
//bottom nav 

    BottomNavigationView bottomNavigationView=(BottomNavigationView) findViewById(R.id.bottom_navigation); 
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      switch (item.getItemId()){ 

       case R.id.action_profile: 
        Toast.makeText(second.this,"hello how are u",Toast.LENGTH_SHORT).show(); 

        break; 
       case R.id.action_home: 
        Toast.makeText(second.this,"hello how are u",Toast.LENGTH_SHORT).show(); 
        break; 
       case R.id.action_add: 
        Toast.makeText(second.this,"hello how are u",Toast.LENGTH_SHORT).show(); 

        break; 
      } 
      return true; 
     } 
    }); 
    //bottom nav 



    mAuth=FirebaseAuth.getInstance(); 


    mAuthListener =new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      if (firebaseAuth.getCurrentUser()==null){ 
       startActivity(new Intent(second.this,MainActivity.class)); 

      } 
     } 
    }; 

    mlogout=(Button) findViewById(R.id.logout); 

    mlogout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mAuth.signOut(); 

     } 
    }); 

} 

@Override 
protected void onStart() { 
    super.onStart(); 

    mAuth.addAuthStateListener(mAuthListener); 
} 

} 

とxmlファイルがあなたのbottom_navigation_mainメニューインサイド

android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/colorPrimaryDark" 
android:id="@+id/drawerLayout" 
tools:context="com.food.sheenishere.stark.second"> 

<Button 
    android:id="@+id/logout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="log out" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginTop="122dp" 
    android:layout_marginLeft="8dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginRight="8dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginStart="8dp" 
    android:layout_marginEnd="8dp" /> 

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/bottom_navigation" 
    android:layout_width="368dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="8dp" 
    android:visibility="visible" 
    app:itemBackground="@color/colorPrimary" 
    app:itemIconTint="@drawable/nav_item_color_state" 
    app:itemTextColor="@drawable/nav_item_color_state" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:menu="@menu/bottom_navigation_main" 
    tools:layout_editor_absoluteX="8dp" /> 

</android.support.constraint.ConstraintLayout> 
+0

https://stackoverflow.com/questions/7479992/handling-a-menu-item-click-event-androidで見てください –

+0

あなたのxmlにR.id.logoutボタンが表示されています... –

+0

sir i xmlファイル –

答えて

0

で行う方法を私を助けてください。あなたのsecond活動のonNavigationItemSelected()方法で

bottom_navigation_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/action_profile" /> 

    <item 
     android:id="@+id/action_home" /> 

    <item 
     android:id="@+id/action_add" /> 

    <item 
     android:id="@+id/action_logout" 
     android:title="Log Out" 
     android:icon="@drawable/ic_logout" 
     app:showAsAction="always"/> 
</menu> 

2.、項目選択R.id.action_logoutかどうかを乗り切るチェック。選択されている場合は、ログアウトメソッドmAuth.signOut()を呼び出します。 onCreate()の方法を次のように更新してください。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 

    // Firebase 
    mAuth = FirebaseAuth.getInstance(); 

    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      if (firebaseAuth.getCurrentUser()==null){ 
       startActivity(new Intent(second.this,MainActivity.class)); 
      } 
     } 
    }; 

    // Bottom Navigation 
    BottomNavigationView bottomNavigationView=(BottomNavigationView) findViewById(R.id.bottom_navigation); 
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      switch (item.getItemId()){ 

       case R.id.action_profile: 
        Toast.makeText(second.this, "Profile", Toast.LENGTH_SHORT).show(); 
        break; 

       case R.id.action_home: 
        Toast.makeText(second.this, "Home", Toast.LENGTH_SHORT).show(); 
        break; 

       case R.id.action_add: 
        Toast.makeText(second.this, "Add", Toast.LENGTH_SHORT).show(); 
        break; 

       case R.id.action_logout: 
        Toast.makeText(second.this, "Log Out", Toast.LENGTH_SHORT).show(); 

        // LogOut 
        mAuth.signOut(); 
        break; 
      } 

      return true; 
     } 
    }); 
} 

希望すると助かります。

+0

で私の質問を編集しました。サーはあなたに戻ってきます...ありがとう –

+0

サー・グッド感謝それは動作しますが、今はその証明の認証はエミュレータで失敗しましたが、電話でうまく動作します –

+0

大歓迎。これまでのところ、実際のデバイスを使ってfirebase認証をチェックする必要があります。エミュレータでは動作しません。 – FAT

関連する問題