-1

I am trying to create a logout button on the Sliding Root Navigation which I found here

This is my main activity

class HomeScreenActivity : AppCompatActivity() {
    private lateinit var binding: ActivityHomeScreenBinding
    private lateinit var leftDrawerBinding: MenuLeftDrawerBinding
    private lateinit var homeScreenViewModel: HomeScreenViewModel
    private var slidingRootNav: SlidingRootNav? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityHomeScreenBinding.inflate(layoutInflater)
        leftDrawerBinding = MenuLeftDrawerBinding.inflate(layoutInflater)
        setContentView(binding.root)
        setSupportActionBar(binding.slToolbar)
        title = ""
        slidingRootSetup(savedInstanceState)
        setUpBottomNavBar()
        homeScreenViewModel = ViewModelProvider(this)[HomeScreenViewModel::class.java]
        replaceFragment(InGymFragment())
//        leftDrawerBinding.logoutFab.setOnClickListener(listener)
    }

    // Side Panel
    private fun slidingRootSetup(savedInstanceState: Bundle?) {
        slidingRootNav = SlidingRootNavBuilder(this)
            .withToolbarMenuToggle(binding.slToolbar)
            .withMenuOpened(false)
            .withGravity(SlideGravity.LEFT)
            .withContentClickableWhenMenuOpened(true)
            .withSavedState(savedInstanceState)
            .withMenuLayout(R.layout.menu_left_drawer)
            .inject()
    }



    private val listener = View.OnClickListener {
        when (it.id) {
            leftDrawerBinding.logoutFab.id -> logout()
        }
    }

    private fun logout() {
        Toast.makeText(this, "logout clicked!", Toast.LENGTH_LONG).show()
//        homeScreenViewModel.logoutUser
//        startActivity(Intent(this,AuthenticationScreenActivity::class.java))
    }

This is the menu left drawer

Screenshot of menu left drawer

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:backgroundTint="@color/colorPrimaryDark"
    android:orientation="vertical">


    <TextView
        android:id="@+id/user_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="20dp"
        android:text="@string/name"
        android:textSize="40sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/user_name">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/current_membership"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/membership_status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/temp"
            android:textSize="50sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/current_membership"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/membership_status2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/temp"
            android:textSize="50sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout2">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/current_membership"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/membership_status3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/temp"
            android:textSize="50sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout3">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/current_membership"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/membership_status4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/temp"
            android:textSize="50sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout4">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/current_membership"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/membership_status5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/temp"
            android:textSize="50sp" />

    </LinearLayout>

    <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
        android:id="@+id/logout_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="16dp"
        android:backgroundTint="@color/white"
        android:focusableInTouchMode="true"
        android:text="@string/logout"
        tools:viewBindingType="com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton"
        android:textColor="@color/black"
        app:icon="@android:drawable/ic_lock_power_off"
        app:iconTint="@color/black"
        app:layout_constraintBottom_toTopOf="@id/app_version"
        app:layout_constraintEnd_toEndOf="parent" />

    <TextView
        android:id="@+id/app_version"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="20dp"
        android:text="@string/app_creator_with_version"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

This is the main activity layout

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.ui.HomeScreenActivity">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/dark_blue">

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/rounded_bottom_appbar"
            app:elevation="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="20dp">

                <androidx.appcompat.widget.Toolbar
                    android:id="@+id/sl_toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="86dp"
                    android:minHeight="?attr/actionBarSize"
                    android:theme="?attr/actionBarTheme"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.0"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <ProgressBar
                    android:id="@+id/id_progress_bar"
                    android:layout_width="65dp"
                    android:layout_height="65dp"
                    android:indeterminateDrawable="@drawable/progress_background"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"/>

                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/profile_image"
                    android:layout_width="48dp"
                    android:layout_height="48dp"
                    android:src="@drawable/profile"
                    android:layout_marginStart="8.5dp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <TextView
                    android:id="@+id/welcomeMessage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="12dp"
                    android:text="@string/app_name"
                    android:textColor="#ECE8E8"
                    android:textSize="16sp"
                    app:layout_constraintStart_toEndOf="@+id/profile_image"
                    app:layout_constraintTop_toTopOf="@+id/profile_image" />

                <TextView
                    android:id="@+id/textView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/today_s_date"
                    android:textColor="#FFFFFF"
                    android:textSize="20sp"
                    app:layout_constraintStart_toStartOf="@+id/welcomeMessage"
                    app:layout_constraintTop_toBottomOf="@+id/welcomeMessage" />

                <ImageView
                    android:id="@+id/notificationsImage"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:src="@drawable/ic_notification"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="@+id/profile_image"
                    android:contentDescription="@string/notification" />


            </androidx.constraintlayout.widget.ConstraintLayout>

        </com.google.android.material.appbar.AppBarLayout>

        <FrameLayout
            android:id="@+id/main_frame_layout"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/appBarLayout" />

        <com.ismaeldivita.chipnavigation.ChipNavigationBar
            android:id="@+id/bottom_nav_bar"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_gravity="bottom"
            android:background="@drawable/rounded_top_bottomnav"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:cnb_menuResource="@menu/bottom_menu" />
    </androidx.constraintlayout.widget.ConstraintLayout>



</androidx.drawerlayout.widget.DrawerLayout>

I don't know how to add an adapter to this. I tried searching for anyone already done that before but didn't find any clue.

Please See: Adding an android:onClick="logout" with fun logout(view: View) { Toast.makeText(this, "logout clicked via xml!", Toast.LENGTH_LONG).show() } works. But I wish to change the text too how am I suppose to get a hold to it?

1 Answers1

0

You should include some relevant code of what you have tried so far, in order to better understand the question. Anyway, if I get that correctly you need to add a Button in the menu.xml file, then in your fragment/activity.kt you can set a onClickListener on said button to implement the logic for logging out.

MRF
  • 106
  • 5
  • Check it now. My question was marked spam when I was adding snippets. And was given a word limit of 30 words. Sorry for the incomplete question. – Shankar Lohar Nov 18 '22 at 13:40
  • Ok, but your question's still a bit unclear: it seems like you already have successfully created a button in your menu, can you please report what error do you get in the log? – MRF Nov 18 '22 at 14:08
  • There is no error. I am just unable to make the button work with the view binding... which results in not being able to do anything with the menu left drawer. – Shankar Lohar Nov 18 '22 at 17:23
  • If you are not sure it should be a comment – Ilya Mashin Nov 21 '22 at 09:43
  • I think it should be a comment and I put a comment – Ilya Mashin Nov 21 '22 at 09:44