2017-05-25 53 views
5
でfindViewById
fun Tryouts() { 
var CheckBox1 : CheckBox = findViewById(R.id.ForwardBox) as CheckBox 
CheckBox1.setChecked(false) 
} 

私はまだKotlinで初心者がkotlinの基本的な動作を学んだ、私はアンドロイドのウィジェットを参照するか、それがTextViewのか、チェックボックスまたはのかどうかのAndroid Studioの状態です変更できないのですよラジオボックス。
すべて同じ場合はfindViewByIdの参照エラー...
私が間違っていることは分かりませんが、Java変換でも同じエラーが出力されます。未解決の参照:Kotlin

+1

私は[Kotlin Androidの拡張機能](https://kotlinlang.org/docs/tutorials/android-plugin.html)をご覧になることをお勧めサイドノートでは、 'findViewById(の必要性を排除したよう) ' –

答えて

3
fun Tryouts() { 
    val checkBox = findViewById(R.id.ForwardBox) as CheckBox 
    checkBox.isChecked = false 
} 

とにかく、例えば、アンダースコアでsepared小文字であなたのIDを定義するために検討してください。

val checkBox = findViewById(R.id.forward_box) as CheckBox 
+0

私は** val **がこのケースではさらに良いと思っています – DEADMC

+0

あなたは正しいです@DEADMC – AlexTa

+0

これはOPの質問には答えられません:未解決の参照エラー。 – Naetmul

4

はKotlinであなたは、単にkotlinx.android.synthetic.<your layout name>からID ForwardBoxを使用し、findViewByIdを使用する必要はありません。コード内で使用されているすべての要素が自動的に見つけられ、kotlinによってレイアウト(xml)のidと同じ変数名に割り当てられます。例えば

これが最も簡単な方法は、あなたのBuild.Gradleに findViewById()

移動を取り除くためにあるようです

fun init(){ 
    ForwardBox.isChecked = false 
} 
3

は、次の行を追加します(モジュールアプリ)

apply plugin: 'kotlin-android-extensions' 
  • そして、それはそのあなたの活動ファイルに来るが、それは多くの人がMainActivity.kt

    あり 単一のビューをインポートするには

    import kotlinx.android.synthetic.main.<layout_name>.<view_name>; 
    

    をインポートすること言った後、次に同期

を押し

  • を同期するように求めますまたは

    すべてのビューをインポートする

    import kotlinx.android.synthetic.main.<layout_name>.*; 
    

    例:

    import kotlinx.android.synthetic.main.activity_main.forwardBox; 
    

    として、それはその後、activity_mainレイアウト にインポートされます。レイアウトで

    <Checkbox id="@+/forwardBox" . . . /> 
    

    ので、どちらかあなたの関数やクラス内で直接

    forwardBox.isChecked = false 
    
    をそれを使用します
  • 0

    あなたのcオードは間違っています。これに変更してください。

    fun Tryouts() { 
        var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox 
        CheckBox1.setChecked(false) 
    } 
    

    Kotlinでは、変数を宣言するだけです。Like:var abc

    abcは、どのタイプのオブジェクトでも初期化できます。

    我々はレイアウトからビューを取らなければならないならば、我々は書く必要があります:

    findViewById(R.id.ForwardBox) 
    

    は、そのビューをキャスト。

    findViewById(R.id.ForwardBox) as CheckBox 
    

    変数に格納します。

    var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox 
    
    関連する問題