Help us understand the problem. What is going on with this article?

Androidアプリを作れるのかチャレンジ

More than 1 year has passed since last update.

はじめに

Androidアプリを作りたいので、Qiitaを使って、書いてみようと思います。

何でAndroidアプリ?

実績があった方がいいかなと思いました。
アプリは前から作ってみたかったです。
Javaかじってたので、少しは分かるんじゃないかな〜と。
アップル信者なのでiOSもやってみたいなー。

自分のレベルとか

プログラムの理解度は基礎構文がわかるかな、レベルかなと。
Javaは2か月くらいかじった程度で、
オブジェクト指向の途中らへんから、よくわかってないくらいです。
スマホ用アプリは作ったことはありません。

作業日記をつけて行く。

10月22日

開発ツールのAndroidstudioをインストールしました。
しかし、
自分のこうしたいなーという理想にするためにどうすればいいのか、さっぱりわかりません。
そこで、
Androidプログラミングの本を買いました。

:point_up: 参考
この本です。
作ればわかる!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っていうもののことか。:innocent:

インテント?

726FB8CE-ADE3-40E1-8B0B-85CE13B94E7E.jpeg
テントにinしてる訳ではなく、
アクティビティを呼び出す仕組みらしい。

10月24日

:sleeping_accommodation:

10月25日

:hatched_chick:用事

10月26日

:hatched_chick:用事

10月27日

:hatched_chick:用事

10月28日

本を読んでみました。_φ(。_。*)
アクティビティはスタック方式(?)で管理される。

AndroidはPCに比べてメモリが少ない。
そのため、システムが終了させていいと判断したらプロセスが強制的に終わる。

スレッド(?)

本を読む続き。
FirstActivityクラス
アプリを動かすと、表示されるアクティビティ。

イベントリスナー 
ボタン押した、キーを叩いたなど動作したら、イベントリスナー→イベントハンドラと実行される。

10月29日

本を読む続き。
本を読みながら作業を行ってみました。
エミュレーターをどうにかこうにか設定しました。

:point_up:参考
仮想端末の作成と管理
https://developer.android.com/studio/run/managing-avds.html?hl=ja
Android Virtual Device (AVD)がいるようだったみたいです。

HelloAndoloidをエミュレーターを使って出せました。
スクリーンショット 2017-10-29 17.04.01.png

それぞれのファイルの役割

スクリーンショット 2017-10-29 23.02.15.png
最初から、たくさんファイルがあるのですが、それぞれ役割があるようです。

AndloidManifest.xml
マニフェスト(?)ファイル。
定義情報が書いてある。

MainActivity
Javaのソースファイル。

activity_main.xml
画面のレイアウトのファイル。

strings.xml
文字列リソースファイル。
レイアウトファイルやJavaのソースファイルで使う文字列を定義する。

ビルドツール?

Gradle Build Tool
https://gradle.org/
Androidstudioはビルドツールというものを使っているようです。

:point_up:ビルド?  参考になりました:bow:
Java製アプリを Eclipse から実行したことしかない新人に「ビルドツールとは?」を説明してみる…そして CI へ
https://qiita.com/Mura-Mi/items/225825cc3715dc04d923
この場合は、実行できるファイルを作ることみたいです。

10月30日

インテントにも2つ種類があるようです。

明示的なインテント。
アプリ内で、アクティビティから、他のアクティビティを呼び出すときに使う。

:point_up:明示的インテントとは
Androidの重要な機能、インテント https://thinkit.co.jp/article/921/1

明示的インテントがアクティビティを直接指定して起動させるのに対し、

ふむ?そのまま呼び起こして起動する?

10月31日

暗黙的なインテント。
明示的に動くアクティビティを指定しないで、インテントの引数に動くアクティビティを推測できるような情報を入れる。

:point_up:暗黙的インテントとは

暗黙的インテントでは、明示的に起動させるアクティビティを指定せずにインテントのパラメータに起動するアクティビティをある程度推測できるだけの情報(インテントフィルター)を入れておくと、該当するアクティビティが起動するようになっています。

:rolling_eyes:インテントフィルター?
:rolling_eyes:あらかじめ材料を用意しておいて、推測して呼び起こすってことかな?

:point_up:インテントとインテントフィルタ
https://developer.android.com/guide/components/intents-filters.html

暗黙インテントは、特定のコンポーネントの名前を指定するのではなく、実行する一般的なアクションを宣言します。これにより、別のアプリのコンポーネントがそのコンポーネントを処理できるようになります。

:rolling_eyes:

たとえば、ユーザーに地図上の場所を表示する場合は、暗黙のインテントを使用して、他の有能なアプリがマップ上の指定された場所を表示するように要求することができます。

:rolling_eyes:ふむ。

11月1日

ツータッチ楽々メールを作ろう。
概要をざっくり。
ボタンを2つ。
ボタンを押されたら、「明示的なインテント」を発行。
アプリ内のメール文章を組み立てるアクティビティに遷移する。
Intent.ACTION_SEBDTO uriパラメータを指定する。
:rolling_eyes:Intent.ACTION_SEBDTO?
:rolling_eyes:uriパラメータ?

暗黙的なインテントのコンストラクタIntent(string action Uri uri)なので、uriパラメータにURLを渡して、actionにIntent..ACTION_VIEWを指定しているだけです。

:point_up:Android 画像ファイルを扱う際のFileとUriまとめ https://qiita.com/wakamesoba98/items/98b79bdfde19612d12b0

android.net.Uri という名称の通り、URI 形式の表記を取り扱う為に Android 用に作成されたクラスです。

:rolling_eyes:ふむふむクラスの1つ。

11月2日

:beer: よく飲んだ。

11月3日

アクティビティを追加していく。
スクリーンショット 2017-11-03 15.35.08.png

スクリーンショット 2017-11-03 16.06.09.png
ボタンは出たけど・・・エミュレーターが起動しない(・ω・ ;

スクリーンショット 2017-11-03 16.06.26.png
エラーが。

11月4日

:beers:

11月5日

:eyes:Kotlinの勉強もはじめました。
ことりんにミーハーだから便乗してみる。https://qiita.com/berukokoko/items/e7a1096e3b7a9ce28272

11月6日

スクリーンショット 2017-11-08 0.26.47.png
今こうなってる。

11月7日

:eyes:エラーコードの読み方が分からないのでググるところから。

Error:(40) Error parsing XML: mismatched tag

Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: Failed to execute aapt

:point_up:タグのミスマッチ?
https://stackoverflow.com/questions/12043170/error-parsing-xml-mismatched-tag
https://stackoverflow.com/questions/29979679/error-error-parsing-xml-mismatched-tag

/>で閉じなさい、と書いてあって直してみたらエラーが変わった。

スクリーンショット 2017-11-08 0.47.09.png
わーお。
Noなんとか並ぶのはってすごい怖いね。

Error:(22) No resource identifier found for attribute 'layout_ceterHorizontal' in package 'android'
エラー:(22)パッケージ 'android'の属性 'layout_ceterHorizontal'のリソース識別子が見つかりませんでした
んなもんないわ!だそうです。

:point_up:
ど素人の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')と一致するリソースが見つかりませんでした。

:eyes: @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がない?

<?xml version="1.0" encoding="utf-8"?>

16dp
16dp

スペルミスでした:eyes:
スクリーンショット 2017-11-12 17.38.33.png
ボタンが出ました:eyes:

11月13日

スクリーンショット 2017-11-13 0.40.00.png
Gitの設定ができてなかったので設定したい。

スクリーンショット 2017-11-13 0.47.12.png
Path to Git executable に 何を設定するんだ?

:point_up:
Android Studio最速入門~効率的にコーディングするための使い方:第24回 バージョン管理 ─GitとGitHub連携
http://bit.ly/1eYxyVK

詰まっているので終わったらにします。

11月14日

MainActivity.javaの内容を書いていきます。
やっとjava書くようだ。
スクリーンショット 2017-11-14 23.58.48.png

メソッドを追加する。

:baby:
@ Override ってなんだっけ・・・
オーバーライド知らないなんて言えない。

スクリーンショット 2017-11-15 0.23.15.png
あと何故エラーが急に日本語になったのか・・・。
何もいじってないはずなんだけど。

エラー発生
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.

スクリーンショット 2017-11-15 0.46.51.png
よくみたら,が.になってた!

スクリーンショット 2017-11-15 0.46.13.png
.classの前にスペースが空いていた!

ビルドしなおしたらまた別のエラーが出ました。

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) エラー: ';'がありません

スクリーンショット 2017-11-17 19.47.35.png
PickUpActivity NoDinnerActivity 追加してなかった!
ないと言われていたようでした。

スクリーンショット 2017-11-17 19.52.51.png
エラーが消えて、再びエミュレーターが動き出しました。

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を実行できませんでした

でた。
スクリーンショット 2017-11-18 15.02.12.png

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" /

スクリーンショット 2017-11-18 16.29.39.png

スクリーンショット 2017-11-18 16.30.33.png
でた

スクリーンショット 2017-11-18 16.39.48.png
文字化け?

スクリーンショット 2017-11-18 16.50.32.png
場所が出ました。

スクリーンショット 2017-11-18 16.57.36.png
わあい打てるようになった。

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の綴り。

スクリーンショット 2017-11-18 17.45.33.png
何故こんなところにラジオボタンが?

で囲ってなかったからだった。

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を解析中にエラーが発生しました:整形式ではありません(無効なトークン)

android:layout_width = "wrap_content"
android:layout_height="wrap_content"
android:text = "@string/button_send"
android:id="@+id/button"
android:layout_below="@id/rg_place"
android:layout_centerHorizontal = "true" />
/の前にスペースを入れたところ、再びエミュレータが起動。

スクリーンショット 2017-11-22 19.40.53.png
ラジオボタンが出ました。

11月23日

:rolling_eyes:そういえばできたものを実機でみたいのだがどうすればいいのだろうか?

簡単丸分かり!Android アプリを実機でテストする手順 [Tech2GO] https://blog.codecamp.jp/android_test

Androidstudio側とスマホ側で環境を設定して、USBで繋げばいいようだ。

JavaJava書くことにします。
スクリーンショット 2017-11-23 22.41.27.png

@Overrideって何だっけ。
:bow:参考にさせていただきました。
Java の @Override って何だhttps://qiita.com/karur4n/items/881bb40a1e6694caca9f

オーバーライドしてますよ、ということらしい。
オーバーライドが何だっけ・・・・。

:bow:参考にさせていただきました。
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);
        }
    });
}

}

打てた。

スクリーンショット 2017-11-24 1.58.13.png
ボタンが押せるようになりました。

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"になっている。

スクリーンショット 2017-11-26 16.51.50.png
ボタン押したら出るようになりました。

Error:(19) Error parsing XML: unbound prefix
エラー:(19)XMLの解析エラー:バインドされていない接頭辞

11月27日

用事。

11月30日

andorid:layout_alignParentLeft="true"

andoridになっていた・・・。

スクリーンショット 2017-11-30 19.43.07.png

出た〜

スクリーンショット 2017-11-30 20.51.10.png

出たああああわあい。

メールが問題なく送ることができました。
完成!!!!:laughing:

berukokoko
あほの🐥エンジニア。SIerで、Androidアプリを勉強中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away