SlideShare a Scribd company logo
1 of 39
Download to read offline
Ishin FUKUOKA
Activity & Intent
Activity & Intent
 Activityとは
 Activityのライフサイクル
 レイアウトリソースとの関連付け・イベントリ
スナー
Activity & Intent
 Intentとは
 明示的インテント/暗黙的インテント
 アクティビティの構造
Activityとは
Activity=画面いやまあ正確には違うんだけど…
内容(ざっくり)
@Overrid
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
………
}
画面での初期処理を行なう
詳しくは次のライフサイクルの説明で
setContentView(layout);
引数にとったlayouをActivityに追加する
findViewById(id);
引数にとったidのViewを取得
Activityのライフサイル
Activityのライフサイクル
 onCreate() アクティビティの生成時に呼ばれ
る。画面の初期化やビューとの関連付など。
 onPause() アクティビティが表示画面から離
れるとき
アクティビティの一生・・・onCreate() ~ onDestroy()
画面が存在する期間・・・onStart()~onStop()
ユーザが操作(タッチ等)できる期間・・・onResume()
~ onPause()
Activityのライフサイクル
 アクティビティはスタック構造で管理されて
いる
 アクティビティが新たに生成されるとスタッ
クに積まれる
 ユーザが操作できるのはスタックの一番上に
あるアクティビティ
 詳しくはIntentのあとで
レイアウトリソース
との関連付け・イベントリスナー
レイアウトリソースとの関連付け
Button button = (Button)findViewById①(R.id.button);
 xmlファイルに記述したボタンなどのビューに関
して,Javaソースでidを引数に取ることによってそ
のオブジェクトを取得できる
→findViewById(id)
 取得したオブジェクトに「クリック時の振る舞
い」などをセットできる
→setOnClickListener( new View.OnClickListener())
イベントリスナーの実装
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)に
て処理を記述
イベントリスナーの実装
別の書き方(こっちの方が馴染みがあるかも)
………
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);
}
};
レイアウトリソースとの関連付け
イベントリスナー以外にも
テキストビューに文字を設定したり、EditTextから
文字を取得したり様々なことができる。
TextView tv = (TextView)findViewById(R.id.tv1);
tv.setText(“XXX”);
UI操作はイベントリスナーでだいたいできる
Intentとは
Intentとは
 あるコンポーネントからの要求(メッセージ)をシ
ステムへ投げる仕組み。アクティビティやサービ
スなどに対して何かしらの動作を要求するときに
メッセージを投げる。
 アクティビティやサービスで使われる(今回はア
クティビティでの使い方のみ説明します)
 アクティビティの画面遷移などでよく使われる
アプリ内の遷移→明示的インテント
アプリ間の遷移→暗黙的インテント
Intentとは
呼び出し元のアクティビティがMainActivity,
呼び出し先のアクティビティがSecondActivityの
場合
(=Mainactivity→SecondActivityの画面遷移)
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
明示的インテント
明示的インテント
 Intentクラスのインスタンスを生成,
startActivity(intent)で遷移先のアクティビティ
がスタックに積まれる
 Intent.putExtra(String Key,Object obj)でアクティ
ビティ間でデータを渡すことができる。
明示的インテント
呼び出し元のアクティビティ(データ送る側)
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
Intent.putExtra(“KEY”,value); //String型の変数value
startActivity(intent);
遷移先のアクティビティ(データ受け取る側)
Intent i= getIntent();
String value = i.getStringExtra(“KEY”);
暗黙的インテント
暗黙的インテント
 インテントを使う際に呼び出したいアプリの条件
を指定することでAndroidが条件に合うインテント
フィルタを持つアプリを抽出してくれる
 暗黙的インテントを使うことで他アプリと連携す
ることができる
Intent-filter
 AndroidManifest.xmlに記載
 呼び出される側で設定
暗黙的インテント
 ブラウザ呼び出し
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");
暗黙的インテント
 最初に表示されるアクティビティに設定されているインテントフィルタ
<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>
Activityの構造
Activityの構造
 スタック ― 複数のアクティビティを管理する
構造
 タスク ― アクティビティ遷移の一連の流れを
まとめたもの。一つのアプリケーションから遷
移したアクティビティは同じタスクに入る。
Activityの構造
あるアプリのアクティビティActivityA, ActivityB
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityA
全てデフォルトでは同じタスクで管理される。
また、同じアクティビティでも新たに生成され
スタックに積まれる。
ActivityA
Activityの構造
あるアプリのアクティビティ ActivityA, ActivityB
暗黙的インテントでActivityBから呼び出された別のアプ
リのアクティビティ ActivityP
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityP
全て同じスタックの上に積まれ、同じタスクで管理される。
→LaunchModeで管理方法を変えられる
Activityの構造:LaunchMode
 AndroidManifest.xmlのactivityタグに記述
<activity
android:name="sample.myapplication3.app.ActivityA"
android:launchMode="standard">
</activity>
 standard,singleTop,singleTask,singleInstanceの4種
Activityの構造:LaunchMode
ActivityA,ActivityB:standard
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityA
ActivityB 呼出 ActivityA 呼出
Activityの構造:LaunchMode
ActivityA:standard ActivityB:singleTop
ActivityA ActivityA
ActivityB
ActivityA
ActivityB
ActivityB 呼出 ActivityB 呼出
onNewIntent()
Activityの構造:LaunchMode
ActivityA:standard ActivityB:singleTask
ActivityB ActivityB
ActivityA
ActivityB
ActivityA 呼出 ActivityB 呼出
onNewIntent()
finish(),バックキー押
下時と同じ動き
Activityの構造:LaunchMode
ActivityA,ActivityC:standard
ActivityB:singleInstance
ActivityA ActivityA ActivityB
ActivityB 呼出 ActivityC 呼出
ActivityA
ActivityC
まとめ
 Activityとは
 Activityのライフサイクル
 ActivityとLayoutファイルの関連付け、イベントリ
スナーの実装
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(. . . . .( )
まとめ
 Intentとは
 明示的インテント/暗黙的インテント
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
 Activityのスタック構造とインテントによる呼び
出しの仕組み
( )
Thank you for Listening.
演習
 イベントリスナー+画面遷移+値渡し
Click!

More Related Content

Viewers also liked

Concurso Procuradoria Geral do Piauí
Concurso Procuradoria Geral do Piauí Concurso Procuradoria Geral do Piauí
Concurso Procuradoria Geral do Piauí eloconcursos
 
Jobbprofil
JobbprofilJobbprofil
Jobbprofil5203hass
 
How not to fail at programming education
How not to fail at programming educationHow not to fail at programming education
How not to fail at programming educationEsther Seyffarth
 
In2thinking conference 2016.psh
In2thinking conference 2016.pshIn2thinking conference 2016.psh
In2thinking conference 2016.pshpshartman
 
Caleb clark's journal
Caleb clark's journalCaleb clark's journal
Caleb clark's journallucyjonas
 
Article Inspiration - Devlin
Article Inspiration - DevlinArticle Inspiration - Devlin
Article Inspiration - Devlinconorg97
 
orientamento Liceo Elio Vittorini Gela 2014_ 2015
orientamento Liceo Elio Vittorini Gela 2014_ 2015orientamento Liceo Elio Vittorini Gela 2014_ 2015
orientamento Liceo Elio Vittorini Gela 2014_ 2015Liceo Elio Vittorini
 
Www.commercialconstructionla
Www.commercialconstructionlaWww.commercialconstructionla
Www.commercialconstructionlalupenelson
 
Sleddin' Road_excerpt_7-7-16
Sleddin' Road_excerpt_7-7-16Sleddin' Road_excerpt_7-7-16
Sleddin' Road_excerpt_7-7-16James Beers
 
Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...
Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...
Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...Rae Abileah
 
Finishing brands atomization technology - vietnamese
Finishing brands   atomization technology - vietnameseFinishing brands   atomization technology - vietnamese
Finishing brands atomization technology - vietnameseVu Nguyen
 
Corporate intro presentation
Corporate intro presentationCorporate intro presentation
Corporate intro presentationVu Nguyen
 
Corporate intro presentation
Corporate intro presentationCorporate intro presentation
Corporate intro presentationVu Nguyen
 

Viewers also liked (19)

Vinnco Indonesia
Vinnco Indonesia Vinnco Indonesia
Vinnco Indonesia
 
Concurso Procuradoria Geral do Piauí
Concurso Procuradoria Geral do Piauí Concurso Procuradoria Geral do Piauí
Concurso Procuradoria Geral do Piauí
 
Acuerdos para evitar la ciberdependia
Acuerdos para evitar la ciberdependiaAcuerdos para evitar la ciberdependia
Acuerdos para evitar la ciberdependia
 
The Stamp Act
The Stamp ActThe Stamp Act
The Stamp Act
 
Jobbprofil
JobbprofilJobbprofil
Jobbprofil
 
How not to fail at programming education
How not to fail at programming educationHow not to fail at programming education
How not to fail at programming education
 
Tik bab 4
Tik bab 4Tik bab 4
Tik bab 4
 
In2thinking conference 2016.psh
In2thinking conference 2016.pshIn2thinking conference 2016.psh
In2thinking conference 2016.psh
 
Caleb clark's journal
Caleb clark's journalCaleb clark's journal
Caleb clark's journal
 
Article Inspiration - Devlin
Article Inspiration - DevlinArticle Inspiration - Devlin
Article Inspiration - Devlin
 
orientamento Liceo Elio Vittorini Gela 2014_ 2015
orientamento Liceo Elio Vittorini Gela 2014_ 2015orientamento Liceo Elio Vittorini Gela 2014_ 2015
orientamento Liceo Elio Vittorini Gela 2014_ 2015
 
Www.commercialconstructionla
Www.commercialconstructionlaWww.commercialconstructionla
Www.commercialconstructionla
 
Sleddin' Road_excerpt_7-7-16
Sleddin' Road_excerpt_7-7-16Sleddin' Road_excerpt_7-7-16
Sleddin' Road_excerpt_7-7-16
 
Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...
Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...
Climate Justice, #BlackLivesMatter, and Palestinian Liberation - Coalition of...
 
BoyleBT9g
BoyleBT9gBoyleBT9g
BoyleBT9g
 
Finishing brands atomization technology - vietnamese
Finishing brands   atomization technology - vietnameseFinishing brands   atomization technology - vietnamese
Finishing brands atomization technology - vietnamese
 
Corporate intro presentation
Corporate intro presentationCorporate intro presentation
Corporate intro presentation
 
Corporate intro presentation
Corporate intro presentationCorporate intro presentation
Corporate intro presentation
 
Diez años del descubrimiento de las células iPS
Diez años del descubrimiento de las células iPSDiez años del descubrimiento de las células iPS
Diez años del descubrimiento de las células iPS
 

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

Pin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widgetPin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widgetcch-robo
 
2015年度研究室プレ卒研用Android講座2
2015年度研究室プレ卒研用Android講座22015年度研究室プレ卒研用Android講座2
2015年度研究室プレ卒研用Android講座2Hokuto Tateyama
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Takashi EGAWA
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜Yusuke SAITO
 
OSC2011 Androidハンズオン
OSC2011 AndroidハンズオンOSC2011 Androidハンズオン
OSC2011 AndroidハンズオンKatsumi Honda
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
おいしいFragment #antama_ws
おいしいFragment #antama_wsおいしいFragment #antama_ws
おいしいFragment #antama_wsTakahiro Yoshimura
 
Android Hacks - 合宿 Activity
Android Hacks - 合宿 ActivityAndroid Hacks - 合宿 Activity
Android Hacks - 合宿 ActivityMasanori Ohkawara
 

Similar to 【Android勉強会】第一回Activity & intent (8)

Pin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widgetPin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widget
 
2015年度研究室プレ卒研用Android講座2
2015年度研究室プレ卒研用Android講座22015年度研究室プレ卒研用Android講座2
2015年度研究室プレ卒研用Android講座2
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
 
OSC2011 Androidハンズオン
OSC2011 AndroidハンズオンOSC2011 Androidハンズオン
OSC2011 Androidハンズオン
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
おいしいFragment #antama_ws
おいしいFragment #antama_wsおいしいFragment #antama_ws
おいしいFragment #antama_ws
 
Android Hacks - 合宿 Activity
Android Hacks - 合宿 ActivityAndroid Hacks - 合宿 Activity
Android Hacks - 合宿 Activity
 

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