LoginSignup
3
2

More than 5 years have passed since last update.

Jetpackを使ってみる

Last updated at Posted at 2018-09-18

結果

image.png
何の結果だよって感じだ

動機

Android Developersを覗いたら、Jetpackとかいういい感じの機能が紹介されてた。
折角見かけたので使ってみた。

準備

公式によるとAndroid Studio 3.2からの機能なので、設定がStableだとCheck for updateしても入らない。
とりあえずcanalyに切り替えて、check for update。

image.png

なんかupdate掛けたら、elevator.exeが実行許可を求めてきた。
何者か知らないけどとりあえず許可した。
マネしちゃいけない事だったら有識者の方がなんとかするだろう。

image.png
3.2どころか3.3がおススメされた

downloadしようとしたらサイトに飛ぶ。

image.png
ここでのおススメは3.2らしい

image.png
割とでかいのでWiFi必須

ダウンロードできたら解凍してbin/studio64.exeを叩く
最新版取ってきたはずなのにupdateがやたらと求められる。
めげずにupdate。

本題

とりあえず公式通りにやってみる。
まずはプロジェクト作成

image.png
kotlin使う人はkotlinチェックを忘れずに

Target Android Deviceも今まで通り

image.png

Fragment + ViewModelを選択

image.png
公式だとActivity & Fragment + ViewModel

公式通りStartActivity。

image.png
この時点でuiとパッケージ分けられる

実際に生成されたファイルはこんな感じ

image.png

ちょっとびっくりしたのが

  • generatedJavaってのがあって超絶便利そう
  • デフォルトでuiパッケージに分類されるの賢い

ではいよいよTake advantage of Jetpackだ。

まずは、start_activity.xmlにnavigate_btを追加。

<Button
    android:id="@+id/navigate_bt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:text="@string/navigate"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/text" />

strings.xmlは適当に

    <string name="navigate">えいやっさ</string>

build.gradleにclasspathついか

classpath 'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha05'

appのgradleに参照を追加

implementation "android.arch.navigation:navigation-fragment:1.0.0-alpha05"
implementation "android.arch.navigation:navigation-ui:1.0.0-alpha05"

StartFragmentのonActivityCreatedをちょっと編集

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(StartViewModel::class.java)

        viewModel.data.observe(this, Observer { data ->
            // Set the text exposed by the LiveData
            view?.findViewById<TextView>(R.id.text)?.text = data
        })
        view?.findViewById<Button>(R.id.navigate_bt)?.setOnClickListener {
            Toast.makeText(this.activity,"あらよっと", Toast.LENGTH_LONG).show()
        }
    }

サンプルではfragmentの切り替えとかやってるけど今回はそこまでやらない。
というわけで実行

image.png
できた(何かしらが)

ふりかえり

今回のJetpackはAndroid Archtecture Componentをできる限り共通認識で利用するための仕組みっぽい。
というわけで、Jetpackを利用するならAndroid Archtecture Componentも勉強しよう!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2