2017-06-09 3 views
0

私はKotlinとAnkoのDSLを使って画像を選択し、ImageViewに読み込むことができる警告ダイアログを作成しようとしています。今すぐImageViewを動作させようとしているので、ピカソを使用してURLからあらかじめ選択したイメージをロードするためにボタンをクリックしてください。私は警告ダイアログのボタンをクリックすると定義されたKotlin/Anko DSLの画像を設定する際に問題がありますImageView

、私はこのエラーを取得する:私はImageViewのはfindViewByIdによってロードされていない何らかの理由で

kotlin.TypeCastException: null cannot be cast to non-null type android.widget.ImageView

推測しています。なぜ誰がこのことが分かっているのですか?私はAnkoのDSLにはわからない奇妙な行動があると思います。

fab.setOnClickListener { view -> 
      alert { 
       title = "New Post" 
       customView { 
        verticalLayout { 

         val subject = editText { 
          hint = "Subject" 
         } 
         imageView { 
          id = R.id.picked_image 
         } 
         linearLayout { 
          gravity = Gravity.CENTER 
          button("Choose Photo") { 
           onClick { 
            Picasso.with([email protected]) 
              .load("http://SomeUrl/image.jpg") 
              .into(findViewById(R.id.picked_image) as ImageView) 

           } 
          } 
          button("Choose Image") {} 
         } 


         positiveButton("Post") { } 
         negativeButton("Cancel") {} 
        } 
       } 
      }.show() 

答えて

2

あなたはこのようImageViewへの参照を取得し、全くのIDに対処することを避けることができます。

val iv = imageView() 
... 
    onClick { 
     Picasso.with([email protected]) 
       .load("http://SomeUrl/image.jpg") 
       .into(iv) 
    } 
... 
+0

ねえ、それは動作しますが、ありがとう!唯一の問題は、後で(onClickの外で)imageViewにアクセスする場合、私はまだ方法が分かりません。 – Parker

+2

'Activity'の内部にプロパティを作成し、それに' ImageView'を割り当てることができます。 – zsmb13

関連する問題