2016-11-30 16 views
1

私はkotlinを学習しています。それが起こる理由xmlのKotlinは動作しません

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'

を:私はエラーを持っているボタンをクリックしたときに、私は、XML

<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()) 
    } 

} 

がありますか?コードは単純ですが、動作しません、なぜ私は理解できません

+2

* Kotlin 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)refこのリンクは言った。 – Jacob

答えて

1

Kotlin Extensionsプラグインを使用しようとすると、動作するはずです。 「kotlin-アンドロイド-Extensionsの が続いkotlin extenstionを使用する必要があります。build.gradleで

(アプリ)は、プラグインを適用するMainActivity.kt

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

私はまだ3-6-18のすべての最新バージョンでこの問題を抱えていますが、Android Studioでは表示されません。コマンドラインで./gradlewを使用してビルドすると表示されます。 私は、プラグイン、インポート、Manifest.xmlツールを持っています:コンテキストライン、すべてです。 lintが私に失敗したと言っているにもかかわらず、私の出力フォルダに.apkがまだ残っています。 おそらく、糸くずの領域にはいくつかの切断がありますか? Androidスタジオでビルドするときにlintが実際には起こらないので... – Bungles

1

それをインポートapply plugin: 'kotlin-android-extensions'

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

を追加しますそれは動作するでしょう

0

入れ墨ファイルで追加

それは、さらにあなたのXMLファイルにメソッドを宣言するのではなく、直接あなたのコード内で ImageViewにonClickListenerを設定することができKotlinの拡張子を追加することをお勧めします上記のように、

はその後の活動は

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

私はまだ3-6-18のすべての最新バージョンでこの問題を抱えていますが、Androidスタジオには表示されませんコマンドラインで./gradlewを使用してビルドする場合。 私は、プラグイン、インポート、Manifest.xmlツールを持っています:コンテキストライン、すべてです。 lintが私に失敗したと言っているにもかかわらず、私の出力フォルダに.apkがまだ残っています。 おそらく、糸くずの領域にはいくつかの切断がありますか? lintはAndroid Studioでビルドするときに実際には発生しないので... – Bungles

0

を追加します。 onClick:フラグメントは、Context

aries.setOnClickListener { doSomething() }

関連する問題