Android Studio에서 Kotlin 및 Kotlin Android 확장 프로그램을 사용해 보려고합니다. Ubuntu 14.04의 Android Studio v 1.5.1과 OS X El Capitan의 Android Studio v 1.5.1에서 동일한 결과로 이것을 시도했습니다.
내가하는 일은 다음과 같습니다.
- Kotlin 플러그인 1.0.0-beta-35950-IJ141-11을 설치합니다.
- 비어있는 새 Android 프로젝트 만들기
- MainActivity 파일을 Kotlin으로 변환합니다 (help-> findaction-> convert file to kotlin).
- Kotlin 용 프로젝트 구성
그런 다음 생성 된 content_main.xml 파일로 이동하여 "Hello World!"에 대한 ID (hello)를 추가합니다. 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>
그런 다음 변환 된 MainActivity에서 TextView를 설정하는 줄을 추가합니다. (아래 표시). 그런 다음 Android Studio에서이 줄을 삽입하라는 메시지가 표시됩니다 (아래도 참조).
import kotlinx.android.synthetic.main.content_main.*
그래서이 시점에서 모든 것이 괜찮아 보입니다
하지만 컴파일하려고하면
Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
내가 한 것을 주목하십시오 Kotlin Android 확장 플러그인을 설치 않았습니다 . 며칠 전부터 이것은 이제 메인 플러그 인에 포함되어야하며 쓸모없는 것으로 표시됩니다. (사실 최신 플러그인이있을 때 설치하려고하면 새로운 플러그인이 설치되지 않습니다.)
아무도 내가 뭘 잘못하고 있는지 알아?
주요 활동
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)
}
}