読者です 読者をやめる 読者になる 読者になる

HONDAのAndroid アプリ, Web アプリ開発忘備録

このブログはHONDAがAndroidアプリの開発開始と同時に作成したもので忘備録として記しています。最近Web系に就職が決まったのでwebアプリも勉強していきます。

画面を遷移させる

というわけで

画面を遷移させてみる。

どのような手順で遷移させるか

例として、名前を入力→画面が遷移して、点数を表示させる。

手順1:遷移元の画面の設定

遷移元の画面をこのように設定する

f:id:havoc0214:20150830051432p:plain

ここで、EditTextは文字を入力させるテキストである。

EditTextを設置する際に荷重などで設置することもできる

このときはandroid : weightをつかう。

横の長さを0にしても荷重が1なので画面にはちゃんとEditTextは表示される。

↓で確認

android.keicode.com

"hint"というものがあるが、これは何も文字を入力していないときに

"ここになにか打ってね"など、入力を促すような文字を表示させるものである。

f:id:havoc0214:20150830051733p:plain

↓で確認する。

andante.in

手順2:getScoreメソッドの設定

ボタンのonClickが起動したときのメソッド(getScore)の設定を行う。

手順2-1:EditTextの取得

まず

EditText myEditText = (EditText)findViewById(R.id.myEditText);

でidが"myEditText"の変数をmyNameに格納する。

つまりEditTextを取得する。

手順2-2:EditTextの中身を取得

String型で名前をとってきたいので

String myName = myEditText.getText()

でとってきたいのだが,getTextの返り値はどうやら

"Editable"型という変数が返り値になる。

String型のものに違う型の変数が代入されるのはまずいので

String myName = myEditText.getText().toString();

このコマンドでString型に変更して値を格納している.

手順2-3:Error処理

つぎに、エラー処理として

例えば、文字入力を行わずにボタンを押したときに

ちゃんと入力してよね!!って注意させるような処理を考える

こちらはif文で対処可能で

if(myName.equal("")){

エラー処理

}else{

}

と処理することができる。

エラーの処理の仕方は3つある(3つ以上あるが自分で勉強したのはこの3つ)

  1. setError:ditTextのメソッド
  2. Toast:画面の下にエラー分を出す
  3. Dialog

1番の入力例は

myEditText.setError("Please edit your name");

2番の入力例は

Toast.makeText(This,"Please edit your name",Toast.LENGTH_SHORT).show();

2については以下に詳しく乗っている

techbooster.jpn.org

3番の入力例は

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

alertDialogBuilder.setTitle("Error").setMessage("please edit your name").setPositiveButton("OK",null);

AlertDialog alertDialog = alertDialogBuilder.create();

alertDialog.show();

3番は理解不能なので2番をつかう。

AVDで表示するとこんな感じ

f:id:havoc0214:20150830053715p:plain

 

手順3:遷移先のActivityを作る

プロジェクトを生成したとき、つくられるActivityは一個なので

遷移させたいActivityを生成する必要がある

f:id:havoc0214:20150830053953p:plain

layout→New→Activity→Blank Activityで

Activityを生成することができる。

遷移先の画面は以下のように設定する

f:id:havoc0214:20150830054218p:plain

ここら辺はとくにいうことがない。

手順4:Intentを使って画面を遷移させる。

さて、ここからが今日のメインである

"画面の遷移"である。

画面の遷移を行うために

Intentというものをつかう。

僕もまだまだ勉強不足なので、これに関しては

ざっくりとした知識で

Intentを生成したActivityから遷移させたいActivityを呼び出し、

データも渡せる

という感じらしい。

先ほどのエラー処理のelse文にIntentを生成する

事前情報として

MyForm ; 遷移元のActivity, EditTextとButtonを持っている。

Myresult ; 遷移後のActivity, 点数を表示させる。

f:id:havoc0214:20150830054650p:plain

Intentの生成を一文目で行う。

()の中には呼び出したいクラスを記述しておく。

次の文でデータを渡す。

putExtra(EXTRA_NAME, myName)

EXTRA_NAMEというキーでString型のmyNameを渡す

この情報は遷移後のActivityで受け取ることができる.

最後にstartActivityで遷移先のActivityを呼び起こす。

キーの設定はandroid manifestのプロジェクト名と引っ付けるのがいいよ

と推奨しているらしいので以下のように定義(競合などを防ぐためらしい

public final static String EXTRA_MYNAME = "com.dotinstall.myapp02.MYNAME";

f:id:havoc0214:20150830055335p:plain

恐らくキーを渡す理由としては、myNameという変数は

myForm.javaでしか通用しないためであると思われる。

キーはどうやら共通で受け取ることができるとのことだ。

最後に遷移したmyResultでこのデータを受け取る

f:id:havoc0214:20150830055934p:plain

受け取るときはgetIntentで受け取る。

今回はString型の受け取りになるので

intent.getStringExtra(キー)をつかいMyResult.javaでの変数myNameに格納する

そしてまぁ0-100までの乱数を発生させて点数を出す。

f:id:havoc0214:20150830060400p:plainf:id:havoc0214:20150830060415p:plain

遷移先でも文字を受け取れているのがわかる。

文字ばけは依然治らないまま。

 

ここで目がいい人は気づくだろうが、遷移した画面からもとの画面に戻れるようにするには

f:id:havoc0214:20150830060634p:plain

アンドロイドマニフェストで親のactivityをMyFormだと指定してやることで

遷移しても戻ることが可能になる。

これが無いと画面右上の矢印マークは出てこない。

 

今日はこんなもので。

 

 

おまけ

f:id:havoc0214:20150830061237p:plain