Ishin FUKUOKA
Activity & Intent
Activity & Intent
 Activityとは
 Activityのライフサイクル
 レイアウトリソースとの関連付け・イベントリ
スナー
Activity & Intent
 Intentとは
 明示的インテント/暗黙的インテント
 アクティビティの構造
Activityとは
Activity=画面いやまあ正確には違うんだけど…
内容(ざっくり)
@Overrid
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
………
}
画面での初期処理を...
Activityのライフサイル
Activityのライフサイクル
 onCreate() アクティビティの生成時に呼ばれ
る。画面の初期化やビューとの関連付など。
 onPause() アクティビティが表示画面から離
れるとき
アクティビティの一生・・・onCreate(...
Activityのライフサイクル
 アクティビティはスタック構造で管理されて
いる
 アクティビティが新たに生成されるとスタッ
クに積まれる
 ユーザが操作できるのはスタックの一番上に
あるアクティビティ
 詳しくはIntentのあとで
レイアウトリソース
との関連付け・イベントリスナー
レイアウトリソースとの関連付け
Button button = (Button)findViewById①(R.id.button);
 xmlファイルに記述したボタンなどのビューに関
して,Javaソースでidを引数に取ることによってそ
の...
イベントリスナーの実装
Button button = (Button)findViewById①(R.id.button);
button.setOnClickListener②(new View.OnClickListener() {
pu...
イベントリスナーの実装
別の書き方(こっちの方が馴染みがあるかも)
………
Button button = (Button)findViewById①(R.id.button);
button.setOnClickListener②(new B...
レイアウトリソースとの関連付け
イベントリスナー以外にも
テキストビューに文字を設定したり、EditTextから
文字を取得したり様々なことができる。
TextView tv = (TextView)findViewById(R.id.tv1)...
Intentとは
Intentとは
 あるコンポーネントからの要求(メッセージ)をシ
ステムへ投げる仕組み。アクティビティやサービ
スなどに対して何かしらの動作を要求するときに
メッセージを投げる。
 アクティビティやサービスで使われる(今回はア
クティビテ...
Intentとは
呼び出し元のアクティビティがMainActivity,
呼び出し先のアクティビティがSecondActivityの
場合
(=Mainactivity→SecondActivityの画面遷移)
Intent intent=ne...
明示的インテント
明示的インテント
 Intentクラスのインスタンスを生成,
startActivity(intent)で遷移先のアクティビティ
がスタックに積まれる
 Intent.putExtra(String Key,Object obj)でアクティ...
明示的インテント
呼び出し元のアクティビティ(データ送る側)
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
Intent.putExtra(“KEY”,va...
暗黙的インテント
暗黙的インテント
 インテントを使う際に呼び出したいアプリの条件
を指定することでAndroidが条件に合うインテント
フィルタを持つアプリを抽出してくれる
 暗黙的インテントを使うことで他アプリと連携す
ることができる
Intent-fi...
暗黙的インテント
 ブラウザ呼び出し
Intent intent = new
Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.co.jp"));
 地図呼び出し
Intent i...
暗黙的インテント
 最初に表示されるアクティビティに設定されているインテントフィルタ
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category...
Activityの構造
Activityの構造
 スタック ― 複数のアクティビティを管理する
構造
 タスク ― アクティビティ遷移の一連の流れを
まとめたもの。一つのアプリケーションから遷
移したアクティビティは同じタスクに入る。
Activityの構造
あるアプリのアクティビティActivityA, ActivityB
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityA
全てデフォルトでは同じタスクで管...
Activityの構造
あるアプリのアクティビティ ActivityA, ActivityB
暗黙的インテントでActivityBから呼び出された別のアプ
リのアクティビティ ActivityP
ActivityA ActivityA
Acti...
Activityの構造:LaunchMode
 AndroidManifest.xmlのactivityタグに記述
<activity
android:name="sample.myapplication3.app.ActivityA"
an...
Activityの構造:LaunchMode
ActivityA,ActivityB:standard
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityA
ActivityB ...
Activityの構造:LaunchMode
ActivityA:standard ActivityB:singleTop
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityB ...
Activityの構造:LaunchMode
ActivityA:standard ActivityB:singleTask
ActivityB ActivityB
ActivityA
ActivityB
ActivityA 呼出 Activi...
Activityの構造:LaunchMode
ActivityA,ActivityC:standard
ActivityB:singleInstance
ActivityA ActivityA ActivityB
ActivityB 呼出 Ac...
まとめ
 Activityとは
 Activityのライフサイクル
 ActivityとLayoutファイルの関連付け、イベントリ
スナーの実装
Button btn = (Button)findViewById(R.id.btn);
b...
まとめ
 Intentとは
 明示的インテント/暗黙的インテント
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
 Activityのス...
Thank you for Listening.
演習
 イベントリスナー+画面遷移+値渡し
Click!
【Android勉強会】第一回Activity & intent
【Android勉強会】第一回Activity & intent
Upcoming SlideShare
Loading in …5
×

【Android勉強会】第一回Activity & intent

1,489 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,489
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

【Android勉強会】第一回Activity & intent

  1. 1. Ishin FUKUOKA Activity & Intent
  2. 2. Activity & Intent  Activityとは  Activityのライフサイクル  レイアウトリソースとの関連付け・イベントリ スナー
  3. 3. Activity & Intent  Intentとは  明示的インテント/暗黙的インテント  アクティビティの構造
  4. 4. Activityとは
  5. 5. Activity=画面いやまあ正確には違うんだけど…
  6. 6. 内容(ざっくり) @Overrid protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ……… } 画面での初期処理を行なう 詳しくは次のライフサイクルの説明で setContentView(layout); 引数にとったlayouをActivityに追加する findViewById(id); 引数にとったidのViewを取得
  7. 7. Activityのライフサイル
  8. 8. Activityのライフサイクル  onCreate() アクティビティの生成時に呼ばれ る。画面の初期化やビューとの関連付など。  onPause() アクティビティが表示画面から離 れるとき アクティビティの一生・・・onCreate() ~ onDestroy() 画面が存在する期間・・・onStart()~onStop() ユーザが操作(タッチ等)できる期間・・・onResume() ~ onPause()
  9. 9. Activityのライフサイクル  アクティビティはスタック構造で管理されて いる  アクティビティが新たに生成されるとスタッ クに積まれる  ユーザが操作できるのはスタックの一番上に あるアクティビティ  詳しくはIntentのあとで
  10. 10. レイアウトリソース との関連付け・イベントリスナー
  11. 11. レイアウトリソースとの関連付け Button button = (Button)findViewById①(R.id.button);  xmlファイルに記述したボタンなどのビューに関 して,Javaソースでidを引数に取ることによってそ のオブジェクトを取得できる →findViewById(id)  取得したオブジェクトに「クリック時の振る舞 い」などをセットできる →setOnClickListener( new View.OnClickListener())
  12. 12. イベントリスナーの実装 Button button = (Button)findViewById①(R.id.button); button.setOnClickListener②(new View.OnClickListener() { public void onClick(View v)③ { Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); ①idからButtonオブジェクトを取得 ②View.setOnclickListener(View.OnClickListener i)メソッドでbuttonオブ ジェクトがクリックされた時の振る舞いを実装 ③View.OnClickListenerインターフェースの抽象メソッドonClick(View v)に て処理を記述
  13. 13. イベントリスナーの実装 別の書き方(こっちの方が馴染みがあるかも) ……… Button button = (Button)findViewById①(R.id.button); button.setOnClickListener②(new ButtonClickListener()); } class ButtonClickListener implements OnClickListener{ public void onClick(View v)③ { Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } };
  14. 14. レイアウトリソースとの関連付け イベントリスナー以外にも テキストビューに文字を設定したり、EditTextから 文字を取得したり様々なことができる。 TextView tv = (TextView)findViewById(R.id.tv1); tv.setText(“XXX”); UI操作はイベントリスナーでだいたいできる
  15. 15. Intentとは
  16. 16. Intentとは  あるコンポーネントからの要求(メッセージ)をシ ステムへ投げる仕組み。アクティビティやサービ スなどに対して何かしらの動作を要求するときに メッセージを投げる。  アクティビティやサービスで使われる(今回はア クティビティでの使い方のみ説明します)  アクティビティの画面遷移などでよく使われる アプリ内の遷移→明示的インテント アプリ間の遷移→暗黙的インテント
  17. 17. Intentとは 呼び出し元のアクティビティがMainActivity, 呼び出し先のアクティビティがSecondActivityの 場合 (=Mainactivity→SecondActivityの画面遷移) Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);
  18. 18. 明示的インテント
  19. 19. 明示的インテント  Intentクラスのインスタンスを生成, startActivity(intent)で遷移先のアクティビティ がスタックに積まれる  Intent.putExtra(String Key,Object obj)でアクティ ビティ間でデータを渡すことができる。
  20. 20. 明示的インテント 呼び出し元のアクティビティ(データ送る側) Intent intent=new Intent(MainActivity.this, SecondActivity.class); Intent.putExtra(“KEY”,value); //String型の変数value startActivity(intent); 遷移先のアクティビティ(データ受け取る側) Intent i= getIntent(); String value = i.getStringExtra(“KEY”);
  21. 21. 暗黙的インテント
  22. 22. 暗黙的インテント  インテントを使う際に呼び出したいアプリの条件 を指定することでAndroidが条件に合うインテント フィルタを持つアプリを抽出してくれる  暗黙的インテントを使うことで他アプリと連携す ることができる Intent-filter  AndroidManifest.xmlに記載  呼び出される側で設定
  23. 23. 暗黙的インテント  ブラウザ呼び出し Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.co.jp"));  地図呼び出し Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("geo:0,0?waseda"));  共有呼び出し(テキストデータ渡し) Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT,"Hello,Google");
  24. 24. 暗黙的インテント  最初に表示されるアクティビティに設定されているインテントフィルタ <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>  テキストを受け取るインテントフィルタ <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain"/> </intent-filter>
  25. 25. Activityの構造
  26. 26. Activityの構造  スタック ― 複数のアクティビティを管理する 構造  タスク ― アクティビティ遷移の一連の流れを まとめたもの。一つのアプリケーションから遷 移したアクティビティは同じタスクに入る。
  27. 27. Activityの構造 あるアプリのアクティビティActivityA, ActivityB ActivityA ActivityA ActivityB ActivityA ActivityB ActivityA 全てデフォルトでは同じタスクで管理される。 また、同じアクティビティでも新たに生成され スタックに積まれる。 ActivityA
  28. 28. Activityの構造 あるアプリのアクティビティ ActivityA, ActivityB 暗黙的インテントでActivityBから呼び出された別のアプ リのアクティビティ ActivityP ActivityA ActivityA ActivityB ActivityA ActivityB ActivityP 全て同じスタックの上に積まれ、同じタスクで管理される。 →LaunchModeで管理方法を変えられる
  29. 29. Activityの構造:LaunchMode  AndroidManifest.xmlのactivityタグに記述 <activity android:name="sample.myapplication3.app.ActivityA" android:launchMode="standard"> </activity>  standard,singleTop,singleTask,singleInstanceの4種
  30. 30. Activityの構造:LaunchMode ActivityA,ActivityB:standard ActivityA ActivityA ActivityB ActivityA ActivityB ActivityA ActivityB 呼出 ActivityA 呼出
  31. 31. Activityの構造:LaunchMode ActivityA:standard ActivityB:singleTop ActivityA ActivityA ActivityB ActivityA ActivityB ActivityB 呼出 ActivityB 呼出 onNewIntent()
  32. 32. Activityの構造:LaunchMode ActivityA:standard ActivityB:singleTask ActivityB ActivityB ActivityA ActivityB ActivityA 呼出 ActivityB 呼出 onNewIntent() finish(),バックキー押 下時と同じ動き
  33. 33. Activityの構造:LaunchMode ActivityA,ActivityC:standard ActivityB:singleInstance ActivityA ActivityA ActivityB ActivityB 呼出 ActivityC 呼出 ActivityA ActivityC
  34. 34. まとめ  Activityとは  Activityのライフサイクル  ActivityとLayoutファイルの関連付け、イベントリ スナーの実装 Button btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(. . . . .( )
  35. 35. まとめ  Intentとは  明示的インテント/暗黙的インテント Intent intent = new Intent(Main.this,Second.class); startActivity(intent);  Activityのスタック構造とインテントによる呼び 出しの仕組み ( )
  36. 36. Thank you for Listening.
  37. 37. 演習  イベントリスナー+画面遷移+値渡し Click!

×