Kotlin: setOnClickListener в приложении Fragment Crashes - PullRequest
0 голосов
/ 14 марта 2020

У меня есть MainActivity с кнопкой, которая вызывает tabbedActivity с FragmentOneActivity и фрагмент_он. xml. Я поместил свою кнопку в фрагмент_ *. 1050 * и произвел тост на FragmentOneActivity . Вот мой код:

class Anct3bActivity : Fragment() {
override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    val v : View = inflater.inflate(R.layout.fragment_anct3b, container, false)

    calculateNutCountButton.setOnClickListener {
        Toast.makeText(
            activity,"Success.",
            Toast.LENGTH_SHORT).show()
    }
    return v
}

}

Мое приложение запускается нормально, но при нажатии кнопки, которая вызывает tabbedActivity , мое приложение вылетает. Однако, когда я удаляю CalculateButton.setOnClickListener из FragmentOneActivity tabbedActivity работает нормально.

Я также попытался разместить CalculateButton. setOnClickListener on tabbedActivity , но все равно происходит сбой.

Это мой первый опыт работы с вкладками, но я не могу, чтобы кто-то использовал setOnClickLIstener .

Пожалуйста, проведите меня через это. Спасибо!

Logcat:

В FragmentOneActivity:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

В закладкеActivity

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.demicode.ccdofieldkit/com.a.fr.meActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

1 Ответ

1 голос
/ 14 марта 2020

Установите прослушиватель по щелчку в onViewCreated, в onCreateView вы вызываете прослушиватель onClick до того, как представление может быть установлено.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    calculateNutCountButton.setOnClickListener {
        Toast.makeText(
            activity,"Success.",
            Toast.LENGTH_SHORT).show()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...