Поэтому у меня есть следующий ImageButton в фрагменте:
<ImageButton android:id="@+id/moneyBtn" style="@android:style/Widget.Holo.Light.ImageButton" android:layout_width="250dp" android:layout_height="250dp" android:layout_centerHorizontal="true" android:layout_marginTop="40dp" android:scaleType="fitCenter" android:adjustViewBounds="true" android:src="@drawable/monkey" android:background="@null"/>
И следующий фрагментActivity.kt
class Home : Fragment() { override public fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view: View? = inflater.inflate(R.layout.fragment_home, container, false) val moneyButton: ImageButton = view?.findViewById(R.id.moneyBtn) as ImageButton val result = MyAppApplication() var money = result.money moneyButton.setOnClickListener(View.OnClickListener { Toast.makeText(activity, "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show() }) return view }
Я также попытался использовать «обычный» Kotline setOnClickListener
moneyButton.setOnClickListener { Toast.makeText(activity, "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show() }
Крушение приложения дозатора и дозатор замерзают, он просто не работает
Я также попытался заменить Тост броском, но это тоже не будет отменено. Может быть, вы можете найти мою ошибку?
Попробуйте инициализировать прослушиватель onActivityCreated
в onActivityCreated
. Он onCreateView
после onCreateView
поэтому он будет обеспечивать onCreateView
представления.
override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) val moneyButton: ImageButton = activity.findViewById(R.id.moneyBtn) as ImageButton moneyButton.setOnClickListener { Toast.makeText(activity, "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show() } }
Странно, я просто попробовал свои фрагменты кода на своей платформе, и Toast всплывает просто отлично … Попробуйте изменить первый аргумент Toast на view.context, чтобы он выглядел примерно так:
Toast.makeText(view.context, "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show()
Дайте мне знать, если это имеет значение.
Поэтому я просто заменил ImageButton
на ImageView
и я не знаю почему, но теперь он работает. Вот XML, если вы столкнулись с той же проблемой:
<ImageView android:id="@+id/moneyPlusBtn" android:layout_width="240dp" android:layout_height="240dp" android:layout_below="@+id/homeText" android:layout_centerHorizontal="true" android:src="@drawable/monkey" />
и вот код Котлина:
val moneyPlusBtn: ImageView = view.findViewById(R.id.moneyPlusBtn) as ImageView moneyPlusBtn.setOnClickListener { Toast.makeText(activity, "Money", Toast.LENGTH_SHORT).show() }
Прежде всего, знаете ли вы, что этот код выполнен? Что слушатель установлен? Возможно, попробуйте использовать класс журнала (он должен быть таким же в Kotlin, как и на Java).
Также,
val result = MyAppApplication() var money = result.money
выглядит подозрительно для меня. Вы пытаетесь создать новый экземпляр приложения?