新しい開発環境になって初めての開発。今までやったことを大分忘れていたので追いつくのにちょっと手間取りましたが、ちょっと見直したらすぐできるようになりました。こうして振り返ってみると、大したことしてないですね。
麻痺している右手をマッサージしつつやりました。相変わらずハコニワデザインさんにお世話になりつつ。
ボタンのアクション
- viewの表示・非表示
- 画像変更
- テキスト変更
- テキスト装飾(大きさ・色)
Javaに入ると丁寧にやらなくてもなんとなくわかりますね。ボタンのイベントの取り方さえ知ってしまえばこっちのものだ、というかんじ。MFCは少し触れるので、慣れている部分もあるかもしれません。
ただ、EditTextから入力されたstringを取ってくるコードを書いているところで突然のエラー。Objeここのページctのidを取ってくるRに赤線が…。
ビルドしてみると、AndroidManifest.xmlというやつの中で、
“Error: No resource found that matches the given name (at value with value @integer/google_play_services_version)”
というエラーが出ているとのこと。何のこっちゃ。
Google play service SDKのエラー
結論から言うと、Google Play Serviceのライブラリをちゃんと読み込むようにしたら直った。
ここのページを参考に、SDK自体はすでにインストールしていたので、
インストールしたSDKをプロジェクトで使えるようにする。
build.gradle
ファイルに追記するわけだが、プロジェクト直下のファイルではなくモジュールごとのファイルを編集するので注意。
dependencies
にcompile 'com.google.android.gms:play-services:+'
を追記する。
こんな感じになる。build.gradle
apply plugin: ‘android’ : dependencies { compile ‘com.android.support:appcompat-v7:+’ compile ‘com.google.android.gms:play-services:+’ }
これだけやってみて、gradleをsyncしたらエラーが消えた。
が、GooglePlayServiceに関係ありそうなコードはいれてないし、なぜ突然そんなエラーがでてきたかはなぞ。ただ、途中importファイルを追加しようとしてAlt + Enterを押したつもりがなんだか変な選択肢がでてきて、適当に選んでしまった。そのあと、デフォルトで入ってるonCreateの下にonStartとかonStopとかいう関数が自動で追加されていたので、それが悪かったような気は大いにする。
このエラー、ググってみると結構似たような質問が簡単にでてきたし、「それみんなぶち当たる壁だけど、GooglePlayServiceをちゃんと取り込んだら大丈夫だよ」みたいなことが書かれていたので、AndroidStudioでは結構よくある問題なのかもしれない。
なんにせよ、直ってよかったです。
Gradleってなんだ
ところでGradleってなんなんでしょう。AndroidStudioでは最初から気になっていたGradle。どうやらビルドに関係があるということはわかりますが……。
ググってみたらこのページが分かりやすかったです。
『Java製アプリを Eclipse から実行したことしかない新人に「ビルドツールとは?」を説明してみる…そして CI へJava製アプリを Eclipse から実行したことしかない新人に「ビルドツールとは?」を説明してみる…そして CI へ』
……冒頭の質問文、「Ant とか Gradle とか,名前は見かけるけど何に使っているのかよくわかりません (意訳)」がまんま自分で笑いましたね。なるほどビルドツール。よく分かりました。
自分は業務でVisualStudioを使っているのですが、あれはビルドツールが統合されている(?)のであまり認識していないんですかね。Property > Linkとかがそれに該当すると理解しました。
今回エラーのためにbuild.gradleというファイルをいじって直しましたが、VSでいうならLinkerエラーでproperty以下の設定を直したり、projectファイルの設定のところを書き直したりしたような感じなんでしょうか。それなら、よくあるエラーというのもちょっとわかるかもしれない。
まとめ
- ボタンのイベントは、xmlでonClickを追加すれば、設定した関数のところに飛んでくる。
- 表示されているObjectは、((***View)findViewById(R.id.****)).~~~~~で大体いろいろできそう。ともかく指定さえできれば操作は関数を見ればよい。
- Gradleはビルドツールの名前。AndroidStudioの標準ビルドツールで、先行ツールのいいとこどり
遅々とした歩みですが進んでます。