Próbuję wypróbować Kotlin i rozszerzenia Kotlin Android w Android Studio. Próbowałem tego zarówno w Android Studio v 1.5.1 na Ubuntu 14.04, jak iw Android Studio v 1.5.1 na OS X El Capitan z tym samym wynikiem.
Oto co robię:
- Instaluję wtyczkę Kotlin 1.0.0-beta-35950-IJ141-11
- Utwórz nowy pusty projekt systemu Android
- Konwertuj plik MainActivity na Kotlin (poprzez help-> findaction-> Convert file to kotlin)
- Skonfiguruj projekt dla Kotlin
Następnie przechodzę do wygenerowanego pliku content_main.xml i dodaję identyfikator (cześć) dla „Hello World!” Widok tekstu.
<?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>
Następnie w przekonwertowanym MainActivity dodaję linię, aby ustawić TextView. (pokazane poniżej). Następnie Android Studio prosi mnie (przez alt-enter) o wstawienie tego wiersza (również pokazanego poniżej)
import kotlinx.android.synthetic.main.content_main.*
W tym momencie wszystko wydaje się w porządku
ale kiedy próbuję to skompilować, otrzymuję
Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
Zauważ, że nie zainstalowałem wtyczki Kotlin Android. Od kilku dni ma to być teraz zawarte w głównej wtyczce i jest oznaczone jako przestarzałe. (W rzeczywistości, jeśli spróbujesz go zainstalować, gdy masz najnowszą wtyczkę, nic nowego nie zostanie zainstalowane)
Czy ktoś widzi, co robię źle?
Główna aktywność
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)
}
}