2016-11-30 49 views
1

我在學習kotlin,現在對我而言,暫時還沒有一段時間。我有XMLxot onClick中的Kotlin無法正常工作

<ImageView 
        android:id="@+id/aries" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:padding="10dp" 
        android:tag="1" 
        android:onClick="clickItemHoro" 
        android:src="@drawable/aries" /> 

和片段

class ChooseYourHoroscope : Fragment(){ 

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, 
           savedInstanceState: Bundle?): View? { 
     val view = inflater.inflate(R.layout.fragment_welcome_old, container, false) 

     return view; 
    } 

    fun clickItemHoro(v: View?){ 
     Log.e("clickItemHoro", v!!.tag.toString()) 
    } 

} 

當我點擊按鈕,我有錯誤:

Could not find method clickItemHoro(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatImageView with id 'aries'

爲什麼會發生?代碼變化很簡單,但它不工作,我不明白爲什麼

+2

*科特林在XML中的onClick不行* ......它不會在Java中工作,太... *在父母或祖先上下文* ...是片段的背景? – Selvin

+0

我明白了,坦克! – g71132

+0

[http://stackoverflow.com/questions/14139774/android-app-crashing-fragment-and-xml-onclick](http://stackoverflow.com/questions/14139774/android-app-crashing-fragment-and -xml-onclick)參考這個鏈接說。 – Jacob

回答

1

嘗試使用Kotlin擴展插件,它應該工作。

中的build.gradle(APP)添加apply plugin: 'kotlin-android-extensions'

apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-android-extensions' 

然後將它導入在MainActivity.kt

import kotlinx.android.synthetic.main.activity_main.* 
+0

我仍然在3-6-18版本中看到所有內容的最新版本,但是我沒有在Android Studio中看到它 - 我在命令行上用./gradlew構建時看到它。 我有插件,導入,Manifest.xml工具:上下文行,所有它。 奇怪的是我仍然在我的輸出文件夾中得到一個.apk,即使lint告訴我它失敗了。 也許在皮棉領域有一些脫節?由於lint在Android Studio中建立時並不真正發生...... – Bungles

1

應用插件: '科特林-Android平臺的擴展' 必須使用科特林extenstion然後它會工作

0

在Gradle文件中添加

apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-android-extensions' 

然後活動添加

import kotlinx.android.synthetic.main.activity_main.* 
+0

我仍然會在3-6-18版本中看到所有內容的最新版本,但我在Android Studio中看不到它 - 我看到它在命令行上使用./gradlew進行構建時。 我有插件,導入,Manifest.xml工具:上下文行,所有它。 奇怪的是我仍然在我的輸出文件夾中得到一個.apk,即使lint告訴我它失敗了。 也許在皮棉領域有一些脫節?由於在Android Studio中構建時lint不會真的發生...... – Bungles

0

正如上面提到它添加科特林擴展一個不錯的主意,另外,你可以直接在你的代碼上ImageView設置onClickListener,而不是在你的XML文件中聲明的方法: onClick

aries.setOnClickListener { doSomething() }