Sto provando a provare Kotlin e le estensioni Android di Kotlin in Android Studio. Ho provato questo sia in Android Studio v 1.5.1 su Ubuntu 14.04, sia in Android Studio v 1.5.1 su OS X El Capitan con lo stesso risultato.
Ecco cosa sto facendo:
- Installa il plugin Kotlin 1.0.0-beta-35950-IJ141-11
- Crea un nuovo progetto Android vuoto
- Converti il file MainActivity in Kotlin (tramite help-> findaction-> converti file in kotlin)
- Configura il progetto per Kotlin
Vado quindi nel file content_main.xml generato e aggiungo un ID (ciao) per "Hello World!" TextView.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/hello"
/>
</RelativeLayout>
Quindi nella MainActivity convertita aggiungo una riga per impostare TextView. (mostrato sotto). Android Studio quindi mi chiede (tramite alt-invio) di inserire questa riga (mostrata anche sotto)
import kotlinx.android.synthetic.main.content_main.*
Quindi a questo punto sembra tutto a posto
ma poi quando provo a compilare questo ottengo
Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
Si noti che non ho installato il plug-in delle estensioni Android di Kotlin. Fino a un paio di giorni fa questo dovrebbe essere incluso nel plug-in principale ed è contrassegnato come obsoleto. (Infatti se provi a installarlo quando hai l'ultimo plugin, non viene installato nulla di nuovo)
Qualcuno vede cosa sto sbagliando?
Attività principale
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View
import android.view.Menu
import android.view.MenuItem
import kotlinx.android.synthetic.main.content_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar) as Toolbar
setSupportActionBar(toolbar)
print("setting text view value to hey")
hello.text = "hey"
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener { view -> Snackbar.make(view, "Replace this with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show() }
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
val id = item.itemId
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true
}
return super.onOptionsItemSelected(item)
}
}