ImageButton OnClickListener无法正常工作

时间:2017-06-17 18:16:25

标签: android kotlin imagebutton

所以我在片段中有以下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"/>

以下fragmentActivity.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()
        }

App剂量崩溃和剂量冻结,它只是不起作用

我也尝试用掷骰子代替Toast,但是也不会被夸大。 也许你可以找到我的错误?

4 个答案:

答案 0 :(得分:1)

尝试在ng-repeat()中初始化您的点击监听器。它在onActivityCreated之后调用,以确保onCreateView充气。

view

答案 1 :(得分:1)

有相同的问题,可以通过以下代码来完成:

在您的var PieData = [ { value : parseInt(<?php echo $variable; ?>), color : '#00c0ef', highlight: '#00c0ef', label : 'Blue' }, 中:

Fragment

原因是override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val rootView = inflater.inflate(R.layout.fragment_home, container, false) val imgViewButton = rootView.findViewById<ImageButton>(R.id.moneyBtn) // Use the current view imgViewButton?.setOnClickListener() { Toast.makeText(activity, "Clicked!", Toast.LENGTH_SHORT).show() } return rootView } 的使用方式不正确。但是,使用这些代码,它会设置当前的View,然后返回完美的视图。

答案 2 :(得分:0)

首先,您是否知道此代码已执行?那个听众被设定了?也许尝试使用 Log class (Kotlin和Java一样)。
另外,

val result = MyAppApplication()
var money = result.money

对我来说很可疑。您是否尝试创建新的Application实例?

答案 3 :(得分:0)

奇怪的是,我刚刚在我的平台上尝试了你的代码片段,并且Toast弹出正常...尝试将toast的第一个arg更改为view.context,所以它看起来像:

Toast.makeText(view.context, "TESTING BUTTON CLICK 1", Toast.LENGTH_SHORT).show()

如果这有所不同,请告诉我。