ImageButton OnClickListener不工作
所以我有一个片段中的以下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.txt
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
初始化您的点击监听器。 它在onCreateView
之后被调用,所以它将确保view
被充满。
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的arg改为view.context,看起来像这样:
Toast.makeText(view.context, "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show()
让我知道这是否有所作为。
所以我用ImageView
替换了ImageButton
,我不知道为什么,但是现在它可以工作。 如果遇到同样的问题,请使用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" />
这里是Kotlin代码:
val moneyPlusBtn: ImageView = view.findViewById(R.id.moneyPlusBtn) as ImageView moneyPlusBtn.setOnClickListener { Toast.makeText(activity, "Money", Toast.LENGTH_SHORT).show() }
首先,你甚至知道这个代码被执行了吗? 聆听者被设置? 也许尝试使用Log类 (在Java中应该和Kotlin一样)。
也,
val result = MyAppApplication() var money = result.money
看起来对我很可疑。 你想创建一个新的应用程序实例吗?