2

こんにちは私はAndroidスタジオとKotlin言語を使用しているアプリを作っていて、新しいアクティビティを開くためにボタンを手に入れることができません。 xmlファイルにボタンが作成されていますが、MainActivity.ktで宣言するKOTLINの構文と、新しいアクティビティに連れて行くOnClickListenerを作成する方法を見つけることができません。私はマニフェストで定義された新しいアクティビティを持っています。実際にMainActivity.ktからsecondActivity.ktに切り替える方法については、構文ヘルプが必要です。どんな助けもありがとうございます。新しいアクティビティを開くKotlinでボタンを作成する方法(Android Studio)

+1

同じようにJavaのようなKotlinでやります。たぶんあなたはコトリンよりもまずアンドロイドを学ぶ必要があります。 –

答えて

3

以下のようにonclickイベントリスナーを追加できます。 Kotlin https://github.com/Kotlin/ankoの拡張 -

button1.setOnClickListener(object: View.OnClickListener { 
    override fun onClick(view: View): Unit { 
     // Handler code here. 
     val intent = Intent(context, DestActivity::class.java); 
     startActivity(intent); 
    } 
}) 

それとも、簡略化した形

button1.setOnClickListener { 
    // Handler code here. 
    val intent = Intent(context, DestActivity::class.java) 
    startActivity(intent); 
    } 
+0

しかし、上記のコードを私のMainActivity.ktファイルに貼り付けてコピーすると、startActivity、Intent、およびコンテキストがすべて未解決の参照であり、最終的な/意図に変数があるというエラーメッセージが表示されます期待される。また、最初の行でメンバーの宣言が期待されています。どんな考えが間違っていますか? 編集:さらに、単純化されたフォームを使用すると、関数の宣言に名前がなくなったというメッセージが表示されます。 – Nutters

+0

あなたのボタン変数名は 'button1'で、' context'変数はアクティビティコンテキストを持っていると仮定しました(そうでなければ 'this'または' YourClassName.this'を使います)。 – Jayanth

+1

このコードをonCreate()内に追加し、findViewById()を介してbutton1の参照を取得した後 – Jayanth

1

を使用することができます私はあなたがアンコの使用をお勧めします。 これは、インテント(およびその他のもの)を最短の方法で使用できるようにします。あなたのケースでもそれは `のll:レイアウトxmlファイル内

button { 
     onClick { startActivity<SecondActivity>() } 
    } 
+0

ありがとう!私もこれについて検討しますが、最初は元の方法をどうやって解決するかを考えていきたいと思いますが、それ以降のプロジェクトでは必ず確認します。乾杯。 – Nutters

2

ボタン

 <Button 
      android:id="@+id/btn_start_new_activity" 
      android:text="New Activity" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

ボタンに設定OnclicklistenerKotlin活動ファイルに

var btn_new_activity = findViewById(R.id.btn_start_new_activity) as Button 

それを宣言するために、開始しますボタンをクリックしたときの新しいアクティビティ

btn_new_activity.setOnClickListener { 
     val intent = Intent(context, NewActivity::class.java) 
     startActivity(intent); 
    } 
関連する問題