2016-12-27 13 views
0

AlertDiaologの浮動アクションボタンリスナーがあります。そして私はXMLから自分のボタンを使いたいです。そして、私がonClickListener()と書いたければ。Kotlinのダイアログでボタンを初期化できません

だから、Javaで私は好き、それを初期化する必要があります。

butAdd = (Button)dialog.findViewById(R.id.btn_add) 
butAdd.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Some code 
    } 

しかし、私が使用しようとしている:Kotlinで

var butAdd = dialog?.findViewById(R.id.btn_add) as Button; 

それはそれを修正する方法の提案だから、

不正確です?リスナーには何が間違っていますか?何findViewById方法を持っていないで、あなたがしているものは何でもクラス

fab?.setOnClickListener { 
    diaolg = AlertDialog.Builder([email protected]) 
    val linearlayout = getLayoutInflater().inflate(R.layout.add_password, null) 
    diaolg?.setView(linearlayout) 
    ?.setTitle("Add a new password") 
    ?.setCancelable(true) 

    var login = findViewById(R.id.login) as EditText 
    var password = findViewById(R.id.password) as EditText 
    var title = findViewById(R.id.title) as EditText 

    var butAdd = diaolg?.findViewById(R.id.btn_add) as Button 
    var butCancel = diaolg?.findViewById(R.id.btn_cancel) as Button 

    butAdd.setOnClickListener(View.OnClickListener { 
     fun onClick(v:View){ 
     } 
    }) 
    butCancel.setOnClickListener(View.OnClickListener { 
     fun onClick(v:View){ 
     } 
    }) 
    diaolg?.create() 
    diaolg?.show() 
} 
+0

「それは間違っています」 - 正確な説明ではありません。 – FWeigl

+0

それは "Unresolved reference:findByView"と表示され、赤色になります –

答えて

0

はここでフローティングアクションボタンの私のコードです。あなたはそう、膨張したレイアウトにfindViewByIdに持って :

var login = linearLayout.findViewById(R.id.login) as EditText 

はまた、私はあなたが、ダイアログ上?を持っている必要があると思う、それはNULLにすることはできませんいけません。 また、varの代わりに意見valを作成しました。

+0

あなたが言ったとおりに作成しましたが、今度は 'var login = linearLayout.findViewById(R.id.login)EditTextとしてTypeCastExceptionをスローします' –

+1

@ПавелБределевを提供する。フルストレークレットとb。ダイアログのために展開するXMLレイアウト。 – FWeigl

1

あなたの活動

//使用R.layout.activity_mainからのあなたの活動に

<Button 
     android:id="@+id/btn_submit" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="submit" /> 

インポートこの行を

   var butAdd = linearlayout.findViewById<Button>(R.id.btn_add) as Button; 
0

インポートこのラインを使用してIDを見つけてくださいメインソースセット

//ac tivity_mainは、あなたのレイアウトファイル名

輸入kotlinx.android.synthetic.main.activity_mainです。*私のために

btn_submit.setOnClickListener { 
      Toast.makeText(this, "hello", Toast.LENGTH_LONG).show(); 
     } 

その作業。

関連する問題