Tôi đang cố gắng dùng thử Kotlin và các tiện ích mở rộng Kotlin Android trong Android Studio. Tôi đã thử điều này cả trong Android Studio v 1.5.1 trên Ubuntu 14.04 và Android Studio v 1.5.1 trên OS X El Capitan với cùng một kết quả.
Đây là những gì tôi đang làm:
- Tôi cài đặt plugin Kotlin 1.0.0-beta-35950-IJ141-11
- Tạo một dự án Android trống mới
- Chuyển đổi tệp MainActivity thành Kotlin (thông qua help-> findaction-> chuyển đổi tệp sang kotlin)
- Định cấu hình dự án cho Kotlin
Sau đó, tôi truy cập tệp content_main.xml đã tạo và thêm một id (xin chào) cho "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>
Sau đó, trong MainActivity đã chuyển đổi, tôi thêm một dòng để đặt TextView. (hình bên dưới). Sau đó, Android Studio sẽ nhắc tôi (thông qua alt-enter) để chèn dòng này (cũng được hiển thị bên dưới)
import kotlinx.android.synthetic.main.content_main.*
Vì vậy, tại thời điểm này mọi thứ có vẻ ổn
nhưng sau đó khi tôi cố gắng biên dịch cái này, tôi nhận được
Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
Lưu ý rằng tôi đã không cài đặt plugin Kotlin Android extension. Kể từ một vài ngày trước, điều này hiện được cho là sẽ được đưa vào plugin chính và được đánh dấu là lỗi thời. (Trong thực tế, nếu bạn cố gắng cài đặt nó khi bạn có plugin mới nhất, thì không có gì mới được cài đặt)
Có ai thấy tôi đang làm gì sai không?
Hoạt động chủ yêu
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)
}
}