0

Navigation drawer

I wrote this code but problem is crash application.

This id my nav_header file xml code,i am using circleimageview and imagebutton.

        <?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="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:background="@color/white">
    
        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/Profile"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_marginStart="10dp"
            android:layout_marginTop="10dp"
            android:src="@drawable/ic_baseline_person_24"
            app:civ_border_color="@color/black"
            app:civ_border_width="2dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <ImageButton
            android:id="@+id/change_Profile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/background_center"
            app:layout_constraintBottom_toBottomOf="@+id/Profile"
            app:layout_constraintEnd_toEndOf="@+id/Profile"
            app:srcCompat="@drawable/ic_baseline_add_circle_24" />
    
        <TextView
            android:id="@+id/User_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:layout_marginTop="72dp"
            android:paddingTop="8dp"
            android:text="Robin Hud"
            android:textColor="@color/black"
            android:textSize="20dp"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <TextView
            android:id="@+id/email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:layout_marginTop="110dp"
            android:text="sufiyan123@gmail.com"
            android:textSize="16dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginTop="135dp"
            android:background="@color/underline"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    
    </androidx.constraintlayout.widget.ConstraintLayout>


----------


This is kotlin file code for navigation drawer

package com.example.pgf.view.home

import android.app.Activity
import android.content.Intent
import android.graphics.Bitmap
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.MediaStore
import android.view.MenuItem
import android.widget.ImageButton
import android.widget.Toast
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.drawerlayout.widget.DrawerLayout
import androidx.fragment.app.Fragment
import com.example.pgf.R
import com.example.pgf.model.PGListModel
import com.example.pgf.view.authentication.Login
import com.example.pgf.view.home.fragments.*
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.navigation.NavigationView
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase
import de.hdodenhof.circleimageview.CircleImageView

class MainActivity : AppCompatActivity() {

    private lateinit var toggle: ActionBarDrawerToggle
    private lateinit var drawerLayout: DrawerLayout
    var email:String? = null
    var profile: CircleImageView? = null
    var reqcode = 345


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //Profile change
        profile = findViewById(R.id.Profile)
        var btnChange = findViewById<ImageButton>(R.id.change_Profile)
        btnChange.setOnClickListener {

            var captureImage = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
            startActivityForResult(captureImage,reqcode)
        }

        //get user Email
        val user = FirebaseAuth.getInstance().currentUser
         email = user?.email
        Toast.makeText(applicationContext,email,Toast.LENGTH_SHORT).show()

        drawerLayout = findViewById(R.id.drawer)
        val navView: NavigationView = findViewById(R.id.navView)

        toggle = ActionBarDrawerToggle(this,drawerLayout,R.string.open,R.string.close)
        drawerLayout.addDrawerListener(toggle)
        toggle.syncState()

        supportActionBar?.setDisplayHomeAsUpEnabled(true)

        replaceFragment(HomeFragment(),"Home")
        navView.setNavigationItemSelectedListener {
            it.isChecked = true
            when(it.itemId){
                R.id.nav_home    -> replaceFragment(HomeFragment(),it.title.toString())
                R.id.nav_star    -> replaceFragment(StarFragment(),it.title.toString())
                R.id.nav_help    -> replaceFragment(HelpFragment(),it.title.toString())
                R.id.nav_setting -> replaceFragment(SettingFragment(),it.title.toString())
                R.id.nav_profile -> replaceFragment(ProfileFragment(),it.title.toString())
                R.id.nav_logout  -> logout()
                R.id.nav_share   -> Toast.makeText(applicationContext,"Clicked Share",Toast.LENGTH_SHORT).show()
            }
            true
        }
    }

    private fun replaceFragment(fragment: Fragment, title: String){
        val fragmentStateManagerControl = supportFragmentManager
        val fragmentTransaction = fragmentStateManagerControl.beginTransaction()
        fragmentTransaction.replace(R.id.framelayout,fragment)
        fragmentTransaction.commit()
        drawerLayout.closeDrawers()
        setTitle(title)

    }

    fun logout(){
        Firebase.auth.signOut()
        startActivity(
            Intent(this,Login::class.java)
        )
        this.finish()
    }
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if (toggle.onOptionsItemSelected(item)){
            return true
        }
        return super.onOptionsItemSelected(item)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(resultCode== Activity.RESULT_OK && requestCode==reqcode && data!=null)
        {
            profile!!.setImageBitmap(data.extras?.get("data") as Bitmap)
        }
        else
        {
            Toast.makeText(applicationContext,"Something Went Wrong!!",Toast.LENGTH_LONG).show()
        }
    }
}

This is my all code,so I want to change profile picture using camera capture on navigation drawer.

so what I do for this?

Logcat enter image description here

sufiyan05
  • 1
  • 2

0 Answers0