Vagrant+Virtual Boxを用いたローカル開発環境の構築
画面を遷移させる
というわけで
画面を遷移させてみる。
どのような手順で遷移させるか
例として、名前を入力→画面が遷移して、点数を表示させる。
手順1:遷移元の画面の設定
遷移元の画面をこのように設定する
ここで、EditTextは文字を入力させるテキストである。
EditTextを設置する際に荷重などで設置することもできる
このときはandroid : weightをつかう。
横の長さを0にしても荷重が1なので画面にはちゃんとEditTextは表示される。
↓で確認
"hint"というものがあるが、これは何も文字を入力していないときに
"ここになにか打ってね"など、入力を促すような文字を表示させるものである。
↓で確認する。
手順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つ)
-
setError:ditTextのメソッド
- Toast:画面の下にエラー分を出す
- Dialog
1番の入力例は
myEditText.setError("Please edit your name");
2番の入力例は
Toast.makeText(This,"Please edit your name",Toast.LENGTH_SHORT).show();
2については以下に詳しく乗っている
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で表示するとこんな感じ
手順3:遷移先のActivityを作る
プロジェクトを生成したとき、つくられるActivityは一個なので
遷移させたいActivityを生成する必要がある
layout→New→Activity→Blank Activityで
Activityを生成することができる。
遷移先の画面は以下のように設定する
ここら辺はとくにいうことがない。
手順4:Intentを使って画面を遷移させる。
さて、ここからが今日のメインである
"画面の遷移"である。
画面の遷移を行うために
Intentというものをつかう。
僕もまだまだ勉強不足なので、これに関しては
ざっくりとした知識で
Intentを生成したActivityから遷移させたいActivityを呼び出し、
データも渡せる
という感じらしい。
先ほどのエラー処理のelse文にIntentを生成する
事前情報として
MyForm ; 遷移元のActivity, EditTextとButtonを持っている。
Myresult ; 遷移後のActivity, 点数を表示させる。
Intentの生成を一文目で行う。
()の中には呼び出したいクラスを記述しておく。
次の文でデータを渡す。
putExtra(EXTRA_NAME, myName)
EXTRA_NAMEというキーでString型のmyNameを渡す
この情報は遷移後のActivityで受け取ることができる.
最後にstartActivityで遷移先のActivityを呼び起こす。
キーの設定はandroid manifestのプロジェクト名と引っ付けるのがいいよ
と推奨しているらしいので以下のように定義(競合などを防ぐためらしい
public final static String EXTRA_MYNAME = "com.dotinstall.myapp02.MYNAME";
恐らくキーを渡す理由としては、myNameという変数は
myForm.javaでしか通用しないためであると思われる。
キーはどうやら共通で受け取ることができるとのことだ。
最後に遷移したmyResultでこのデータを受け取る
受け取るときはgetIntentで受け取る。
今回はString型の受け取りになるので
intent.getStringExtra(キー)をつかいMyResult.javaでの変数myNameに格納する
そしてまぁ0-100までの乱数を発生させて点数を出す。
遷移先でも文字を受け取れているのがわかる。
文字ばけは依然治らないまま。
ここで目がいい人は気づくだろうが、遷移した画面からもとの画面に戻れるようにするには
アンドロイドマニフェストで親のactivityをMyFormだと指定してやることで
遷移しても戻ることが可能になる。
これが無いと画面右上の矢印マークは出てこない。
今日はこんなもので。
おまけ