#はじめに
Androidアプリを作りたいので、Qiitaを使って、書いてみようと思います。
#何でAndroidアプリ?
実績があった方がいいかなと思いました。
アプリは前から作ってみたかったです。
Javaかじってたので、少しは分かるんじゃないかな〜と。
アップル信者なのでiOSもやってみたいなー。
#自分のレベルとか
プログラムの理解度は基礎構文がわかるかな、レベルかなと。
Javaは2か月くらいかじった程度で、
オブジェクト指向の途中らへんから、よくわかってないくらいです。
スマホ用アプリは作ったことはありません。
#作業日記をつけて行く。
##10月22日
開発ツールのAndroidstudioをインストールしました。
しかし、
自分のこうしたいなーという理想にするためにどうすればいいのか、さっぱりわかりません。
そこで、
Androidプログラミングの本を買いました。
参考
この本です。
作ればわかる!Androidプログラミング 第4版 SDK5/6 Android Studio対応 10の実践サンプルで学ぶAndroidアプリ開発入門(金宏和實) | 翔泳社の本 http://www.shoeisha.co.jp/book/detail/9784798145808
##10月23日
Androidプログラミングの本を読むことにします。
2章でこんなアプリ作ってみましょー、コーナーが始まりました。
メールのアプリのようです。
見よう見まねで作ってみようと思います。
本文から
メールの内容なんて大体「めしいらない」に決まっています。
ちょいちょいギャグなんだろうけど、
個人的に言葉が、刺さるのはごにょごにょ٩( 'ω' )و
###アクティビティ
ユーザーインターフェースを提供し、ユーザーの操作に応答するオブジェクト。
ユーザーインターフェースってなんじゃ?
ググろう、ググろう。
ユーザインタフェース (英: User Interface, UI) は、機械、特にコンピュータとその機械の利用者(通常は人間)の間での情報をやりとりするためのインタフェースである。
wikipediaより
UIっていうもののことか。
###インテント?
テントにinしてる訳ではなく、
アクティビティを呼び出す仕組みらしい。
##10月24日
##10月25日
用事
##10月26日
用事
##10月27日
用事
##10月28日
本を読んでみました。_φ(。_。*)
アクティビティはスタック方式(?)で管理される。
AndroidはPCに比べてメモリが少ない。
そのため、システムが終了させていいと判断したらプロセスが強制的に終わる。
スレッド(?)
本を読む続き。
FirstActivityクラス
アプリを動かすと、表示されるアクティビティ。
イベントリスナー
ボタン押した、キーを叩いたなど動作したら、イベントリスナー→イベントハンドラと実行される。
##10月29日
本を読む続き。
本を読みながら作業を行ってみました。
エミュレーターをどうにかこうにか設定しました。
参考
仮想端末の作成と管理
https://developer.android.com/studio/run/managing-avds.html?hl=ja
Android Virtual Device (AVD)がいるようだったみたいです。
HelloAndoloidをエミュレーターを使って出せました。
###それぞれのファイルの役割
最初から、たくさんファイルがあるのですが、それぞれ役割があるようです。
AndloidManifest.xml
マニフェスト(?)ファイル。
定義情報が書いてある。
MainActivity
Javaのソースファイル。
activity_main.xml
画面のレイアウトのファイル。
strings.xml
文字列リソースファイル。
レイアウトファイルやJavaのソースファイルで使う文字列を定義する。
###ビルドツール?
Gradle Build Tool
https://gradle.org/
Androidstudioはビルドツールというものを使っているようです。
ビルド? 参考になりました
Java製アプリを Eclipse から実行したことしかない新人に「ビルドツールとは?」を説明してみる…そして CI へ
https://qiita.com/Mura-Mi/items/225825cc3715dc04d923
この場合は、実行できるファイルを作ることみたいです。
##10月30日
インテントにも2つ種類があるようです。
明示的なインテント。
アプリ内で、アクティビティから、他のアクティビティを呼び出すときに使う。
明示的インテントとは
Androidの重要な機能、インテント https://thinkit.co.jp/article/921/1
明示的インテントがアクティビティを直接指定して起動させるのに対し、
ふむ?そのまま呼び起こして起動する?
##10月31日
暗黙的なインテント。
明示的に動くアクティビティを指定しないで、インテントの引数に動くアクティビティを推測できるような情報を入れる。
暗黙的インテントとは
暗黙的インテントでは、明示的に起動させるアクティビティを指定せずにインテントのパラメータに起動するアクティビティをある程度推測できるだけの情報(インテントフィルター)を入れておくと、該当するアクティビティが起動するようになっています。
インテントフィルター?
あらかじめ材料を用意しておいて、推測して呼び起こすってことかな?
インテントとインテントフィルタ
https://developer.android.com/guide/components/intents-filters.html
暗黙インテントは、特定のコンポーネントの名前を指定するのではなく、実行する一般的なアクションを宣言します。これにより、別のアプリのコンポーネントがそのコンポーネントを処理できるようになります。
たとえば、ユーザーに地図上の場所を表示する場合は、暗黙のインテントを使用して、他の有能なアプリがマップ上の指定された場所を表示するように要求することができます。
ふむ。
##11月1日
ツータッチ楽々メールを作ろう。
概要をざっくり。
ボタンを2つ。
ボタンを押されたら、「明示的なインテント」を発行。
アプリ内のメール文章を組み立てるアクティビティに遷移する。
Intent.ACTION_SEBDTO uriパラメータを指定する。
Intent.ACTION_SEBDTO?
uriパラメータ?
暗黙的なインテントのコンストラクタIntent(string action Uri uri)なので、uriパラメータにURLを渡して、actionにIntent..ACTION_VIEWを指定しているだけです。
Android 画像ファイルを扱う際のFileとUriまとめ https://qiita.com/wakamesoba98/items/98b79bdfde19612d12b0
android.net.Uri という名称の通り、URI 形式の表記を取り扱う為に Android 用に作成されたクラスです。
ふむふむクラスの1つ。
##11月2日
よく飲んだ。
ボタンは出たけど・・・エミュレーターが起動しない(・ω・ ;
##11月4日
##11月5日
Kotlinの勉強もはじめました。
ことりんにミーハーだから便乗してみる。https://qiita.com/berukokoko/items/e7a1096e3b7a9ce28272
##11月7日
エラーコードの読み方が分からないのでググるところから。
Error:(40) Error parsing XML: mismatched tag
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt
タグのミスマッチ?
https://stackoverflow.com/questions/12043170/error-parsing-xml-mismatched-tag
https://stackoverflow.com/questions/29979679/error-error-parsing-xml-mismatched-tag
/>で閉じなさい、と書いてあって直してみたらエラーが変わった。
Error:(22) No resource identifier found for attribute 'layout_ceterHorizontal' in package 'android'
エラー:(22)パッケージ 'android'の属性 'layout_ceterHorizontal'のリソース識別子が見つかりませんでした
んなもんないわ!だそうです。
ど素人のAndroidアプリ開発入門 : R cannot be resolved to a variable http://androidhacker.blog94.fc2.com/blog-entry-92.html
XMLファイルのスペルミス?
見直しをしてみる。
変えたらエラーが消えた。xmlns:android="http://schemas.android.com/apk/res/android
xmlns:android="http://schemas.android.com/apk/lib/android
まだ消えてないエラー
Error:(8, 28) No resource found that matches the given name (at 'paddingBottom' with value '@dimen/activity_vertical_margin').
Error:(8, 28) No resource found that matches the given name (at 'paddingBottom' with value '@dimen/activity_vertical_margin').
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt
##11月8日
🍺
##11月9日
用事。
##11月10日
英語勉強。
##11月11日
遊んでました。
##11月12日
もくもくする!
まだ消えてないエラー
Error:(8, 28) No resource found that matches the given name (at 'paddingBottom' with value '@dimen/activity_vertical_margin').
Error:(8, 28) No resource found that matches the given name (at 'paddingBottom' with value '@dimen/activity_vertical_margin').
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common
エラー:(8、28)指定された名前( 'paddingBottom'の値が '@ dimen / activity_vertical_margin')と一致するリソースが見つかりませんでした。
@dimen/activity_vertical_margin エラー
https://ja.stackoverflow.com/questions/35351/android-studio%E3%81%A7%E3%81%AE%E8%A8%88%E7%AE%97%E3%81%8D%E3%81%A5%E3%81%8F%E3%82%8A%E3%81%A7%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC
おっふ。
本とバージョンが違っていて、dimens.xmlがない?
##11月13日
Gitの設定ができてなかったので設定したい。
Path to Git executable に 何を設定するんだ?
Android Studio最速入門~効率的にコーディングするための使い方:第24回 バージョン管理 ─GitとGitHub連携
http://bit.ly/1eYxyVK
詰まっているので終わったらにします。
##11月14日
MainActivity.javaの内容を書いていきます。
やっとjava書くようだ。
メソッドを追加する。
@ Override ってなんだっけ・・・
オーバーライド知らないなんて言えない。
あと何故エラーが急に日本語になったのか・・・。
何もいじってないはずなんだけど。
エラー発生
Error:(20, 79) エラー: がありません
Error:(20, 85) エラー: ';'がありません
Error:(28, 13) エラー: 無効なメソッド宣言です。戻り値の型が必要です。
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
ビルドしなおしたらまた別のエラーが出ました。
Error:(6, 20) エラー: パッケージandloid.viewは存在しません
Error:(16, 9) エラー: シンボルを見つけられません
シンボル: クラス Button
場所: クラス MainActivity
import andloid.view.View; andloidになっている・・・。
Error:(17, 46) エラー: シンボルを見つけられません
シンボル: クラス OnClickLisner
場所: クラス View
Error:(28, 62) エラー: シンボルを見つけられません
シンボル: クラス NoDinnerActivity
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
消えないのでこれの続きからやりたい。
##11月15日
英語の勉強。
##11月16日
全然違うのを勉強していた。
##11月17日
エラーから。
Error:(17, 46) エラー: シンボルを見つけられません
シンボル: クラス OnClickLisner
場所: クラス View
Error:(28, 62) エラー: シンボルを見つけられません
シンボル: クラス NoDinnerActivity
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
エラー:タスク ':app:compileDebugJavaWithJavac'の実行に失敗しました。
コンパイルに失敗しました。 詳細については、コンパイラのエラー出力を参照してください。
btnPickUp.setOnClickListener(new View.OnClickListener() {
の綴りが違った。
Internet intent が Intent intent
Error:(19, 17) エラー: 注釈型はこの種類の宣言に使用できません
rror:(20, 61) エラー: '\u3000'は不正な文字です
Error:(20, 76) エラー: 文ではありません
Error:(20, 82) エラー: ';'がありません
PickUpActivity NoDinnerActivity 追加してなかった!
ないと言われていたようでした。
##11月16日
もくもく会来たから続きやる。
PickUpActivityの画面の処理のところ。
activity_pick_up.xml
画面のレイアウト定義。
謎のエラー。
Error:(13) Error parsing XML: junk after document element
エラー:(13)XMLを解析中にエラーが発生しました:ドキュメント要素の後の迷惑メール
Error:(13) Error parsing XML: junk after document element
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt
エラー:タスク ':app:processDebugResources'の実行に失敗しました。
com.android.ide.common.process.ProcessException:aaptを実行できませんでした
Error:(11) Error parsing XML: unbound prefix
Error:Execution failed for task
':app:processDebugResources'.
エラー:(11)XML解析中のエラー:バインドされていない接頭辞
com.android.ide.common.process.ProcessException: Failed to execute aapt
のタグで囲ってなかった。
android:text="@string/subject"
andoroid:text="@string/subject"
になっていた。
Error:(24, 21) No resource found that matches the given name (at 'text' with value '@string/button_pickip').
エラー:(24、21)指定された名前( 'text'、値 '@ string / button_pickip')と一致するリソースは見つかりませんでした。
Error:(24, 21) No resource found that matches the given name (at 'text' with value '@string/button_pickip').
android:text = "@string/button_pickip"
android:text = "@string/button_pickup" /
Error:(47) Error parsing XML: unbound prefix
Error:(47) Error parsing XML: unbound prefix
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt
androidの綴り。
で囲ってなかったからだった。
Error:(72) Error parsing XML: not well-formed (invalid token)
エラー:(72)XML解析中にエラーが発生しました:整形式ではありません(無効なトークン)
Error:(74) Error parsing XML: junk after document element
エラー:(74)XMLの解析中にエラーが発生しました:ドキュメント要素の後の迷惑メール
##11月19日
よく遊んだ。
##11月20日
よく寝た。
##11月21日
用事。
##11月22日
続きを行う。
Error:(74) Error parsing XML: junk after document element
エラー:(74)XMLを解析中にエラーが発生しました:ドキュメント要素の後のジャンク
Error:Execution failed for task
':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt
エラー:タスクの実行に失敗しました
':app:processDebugResources'
com.android.ide.common.process.ProcessException:aaptを実行できませんでした
<RadioGroupが何故か先頭で囲っている・・・。
Error:(70) Error parsing XML: mismatched tag
エラー:(70)XMLの解析中にエラーが発生しました:タグが一致しません
<RadioGroup
android:id="@+id/rg_place"
android:layout_width = "fill_parent"
android:layout_height="wrap_content"
android:layout_below = "@+id/textView3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
>
/を外した。
Error:(79) Error parsing XML: not well-formed (invalid token)
エラー:(79)XMLを解析中にエラーが発生しました:整形式ではありません(無効なトークン)
/の前にスペースを入れたところ、再びエミュレータが起動。
##11月23日
そういえばできたものを実機でみたいのだがどうすればいいのだろうか?
簡単丸分かり!Android アプリを実機でテストする手順 [Tech2GO] https://blog.codecamp.jp/android_test
Androidstudio側とスマホ側で環境を設定して、USBで繋げばいいようだ。
@Overrideって何だっけ。
参考にさせていただきました。
Java の @Override って何だhttps://qiita.com/karur4n/items/881bb40a1e6694caca9f
オーバーライドしてますよ、ということらしい。
オーバーライドが何だっけ・・・・。
参考にさせていただきました。
9-4. 継承3 メソッドのオーバーライド - マンガで分かる Java入門講座 - マンガPG https://manga.crocro.com/?cat=java&pg=override_method#QboDS4Y.twitter_tweet_count_no_m
Error:(31, 84) エラー: ラムダ式は-source 1.7でサポートされていません
(ラムダ式を使用可能にするには、-source 8以上を使用してください)
package com.example.rin.helloandoloid;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class PickUpActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pick_up);
Button btnSend = (Button) this.findViewById(R.id.button);
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RadioGroup rgPlace = (RadioGroup) findViewById(R.id.rg_place);
int checkedId = rgPlace.getCheckedRadioButtonId();
String strPlace = ((RadioButton) findViewById(checkedId)).getText().toString();
EditText edit01 = (EditText) findViewById(R.id.editText);
String title = edit01.getText().toString();
Resources res = getResources();
Uri uri =Uri.parse("mailto;" + res.getString(R.string.mail_to).toString());
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra(Intent.EXTRA_TEXT, title);
intent.putExtra(Intent.EXTRA_TEXT, strPlace + "迎えに来て");
startActivity(intent);
}
});
}
}
打てた。
##11月24日
用事
##11月25日
続きを。
activity_no_dinner.xmlを編集していく!
エラーが発生。
Error:(2) No resource identifier found for attribute 'paddingButton' in package 'android'
エラー:(2) 'android'パッケージの 'paddingButton'属性のリソース識別子が見つかりません
Error:(2) No resource identifier found for attribute 'paddingButton' in package 'android'
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt
エラー:タスク ':app:processDebugResources'の実行に失敗しました。 com.android.ide.common.process.ProcessException:aaptを実行できませんでした
##11月26日
android:paddingButton="@dimen/activity_vertical_margin"
BottomがButtonになっている。
再びエミュレータが動いた。
Error:(15, 32) String types not allowed (at 'layout_height' with value 'erap_content').
エラー:(15,32)文字列型は許可されません( 'layout_height'、値 'erap_content')。
android:layout_height="erap_content"になっている。
Error:(19) Error parsing XML: unbound prefix
エラー:(19)XMLの解析エラー:バインドされていない接頭辞
##11月27日
用事。
##11月30日
andorid:layout_alignParentLeft="true"
andoridになっていた・・・。
出た〜
出たああああわあい。
メールが問題なく送ることができました。
完成!!!!