Не могу использовать кнопку на фрагменте - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь установить OnClickListener для кнопки. Когда я запускаю приложение, на этих кнопках появляется NullPointerException.

Это мой фрагмент:

class EditProfileFragment : Fragment() {


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment

        edit_photo.setOnClickListener {  }


        return inflater.inflate(R.layout.fragment_edit_profile, container, false)
    }
}

И это фрагмент xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient_background"
    android:fitsSystemWindows="true"
    tools:context=".ui.fragment.EditProfileFragment">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="48dp">
        <View
            android:layout_width="match_parent"
            android:layout_height="35dp" />
        <Button
            android:id="@+id/edit_profile"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/rounded_button"
            android:text="@string/edit_profile"
            android:textColor="#FFFFFF"
            android:padding="8dp" />


    </LinearLayout>
</FrameLayout>

Я получаю сообщение об ошибке от кнопки edit_profile.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

позвольте мне сначала сообщить вам об ошибке при создании представления, используемой для создания представления из layoutinflate, поэтому вы должны сначала объявить представление, а затем взять объект из этого представления

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment

val view = inflater.inflate(R.layout.fragment_edit_profile, container, false)
var edit_photo = view.findViewById(R.id.edit_photo)        
edit_photo.setOnClickListener {  }
return view
}

здесь вы сообщаете, что я создаю экземпляр кнопки с этой точки зрения не до инфляции

0 голосов
/ 18 апреля 2020

нажмите кнопку перемещения в onViewCreated фрагмента

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    edit_photo.setOnClickListener {  }

     }
...