Androidプログラミング 2 回目 迫紀徳
前回の復習もかねて BMI 計算アプリを作ってみよう! 2
3
BMI の計算方法 BMI = 体重 [kg] 身長 [m] 2 状態も表示できると GOOD 状態低体重 ( 痩せ型 ) 普通体重肥満 (1 度 ) 肥満 (2 度 ) 肥満 (3 度 ) 肥満 (4 度 ) 指標 18.5 未満 18.5 以上 25 未満 25 以上 30 未満 30 以上 35 未満 35 以上 40 未満 40 以上 4
アクティビティ 5
アクティビティとは 画面の状態を管理するもの 画面の遷移はアクティビティ単位で行う ライフサイクルがある 6
引用 :2012 年の Android 講習会第 2 回資料 7
引用 :2012 年の Android 講習会第 2 回資料 8
oncreate 生成 : 初めて画面が生成される時 onstart 表示 : 画面を表示する直前 onresume 対話開始 : 入力の受付を開始した時 onpause 対話 : 画面が非表示になった時 onstop 非表示 : 画面がしばらく非表示になった時 onrestart 停止 : 停止状態から再開する時 ondestroy 停止 : 停止状態から破棄される直前 onsaveinstancestate 適宜 : 適切なタイミングで画面情報を保持 引用 :2012 年の Android 講習会第 2 回資料 9
例 1: アプリケーション起動 oncreate 生成 : 初めて画面が生成される時 onstart 表示 : 画面を表示する直前 onresume 対話開始 : 入力の受付を開始した時 onpause 対話 : 画面が非表示になった時 onstop 非表示 : 画面がしばらく非表示になった時 onrestart 停止 : 停止状態から再開する時 ondestroy 停止 : 停止状態から破棄される直前 onsaveinstancestate 適宜 : 適切なタイミングで画面情報を保持 引用 :2012 年の Android 講習会第 2 回資料 10
例 2: アプリケーション終了 oncreate 生成 : 初めて画面が生成される時 onstart 表示 : 画面を表示する直前 onresume 対話開始 : 入力の受付を開始した時 onpause 対話 : 画面が非表示になった時 onstop 非表示 : 画面がしばらく非表示になった時 onrestart 停止 : 停止状態から再開する時 ondestroy 停止 : 停止状態から破棄される直前 onsaveinstancestate 適宜 : 適切なタイミングで画面情報を保持 引用 :2012 年の Android 講習会第 2 回資料 11
インテント 12
インテントとは 画面遷移を行うための仕組み アプリからアプリへの遷移も可能 13
実際にやってみる 14
15
16
17
18
19
遷移先のアクティビティを作る 20
21
22
23
24
MainActivity.java の変更 25
package com.example.intentexample; import android.os.bundle; import android.app.activity; import android.view.menu; public class MainActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } @Override public boolean oncreateoptionsmenu(menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.main, menu); return true; } } 26
以下の import 文を追加 import android.content.intent; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; 27
public class MainActivity extends Activity { private Button button1; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } button1 = (Button)findViewById(R.id.button1); button1.setonclicklistener(new MyClickListener()); class MyClickListener implements OnClickListener{ public void onclick(view v){ } } 28
public class MainActivity extends Activity { private Button button1; private Intent intent1; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); button1 = (Button)findViewById(R.id.button1); button1.setonclicklistener(new MyClickListener()); } intent1 = new Intent(MainActivity.this, SubActivity.class); 29
class MyClickListener implements OnClickListener{ public void onclick(view v){ intent1.putextra("key", " インテントの例 "); startactivity(intent1); } } 30
SubActivity.java の変更 31
package com.example.intentexample; import android.os.bundle; import android.app.activity; import android.view.menu; public class SubActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_sub); } @Override public boolean oncreateoptionsmenu(menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.sub, menu); return true; } } 32
以下の import 文を追加 import android.content.intent; import android.widget.textview; 33
public class SubActivity extends Activity { private TextView textview1; private Intent intent1; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_sub); } 34
protected void oncreate(bundle savedinstancestate) { String str1 = ""; super.oncreate(savedinstancestate); setcontentview(r.layout.activity_sub); textview1 = (TextView)findViewById(R.id.textView1); intent1 = getintent(); Bundle extras = intent1.getextras(); } str1 = extras.getstring("key"); textview1.settext(str1); 35
ボタンを押すと 36
37
最後に 38
たこパきてね! 参加メールしてない人も 39