アクティビティへのリンク
Linking Activities
リンクアクティビティの管理は、
これから作る様々なAndroidアプリケーションの
他のアクティビティへの
リンクを作るのに様々な方法を可能にしてくれます。
いまから作るアプリケーションに2つのアクティビティがあると
仮定してプログラムを書いてみます。
以下のAndroidManifest.xmlファイルは、
2つのアクティビティクラス、
MainActivityとActivity2を使っています。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.learn2develop.linking"
android: versionCode="1"
android: versionName="1.0" >
<uses-sdk
android: minSdkVersion="8"
android: targetSddkVersion="15" />
<application
android: icon="@drawable/ic_launcher"
android: label="@string/app_name"
android: theme="@style/AppTheme" >
<activity
android: name=".MainActivity"
label="@string/title_activity_main"
<intent-filter>
<action android: name="android.intent.action.MAIN />
<categoty android: name="android.intent.categoty.LAUNCHER" />
</intent-filter>
<activity>
<activity>
android: name=".Activity2"
android: label="@string/app_name" >
<intent-filter>
<action android: name="net.learn2develop.Activity2" />
<categoty android: name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
今現在MainActivityの動作中だとすると、
Activity2にリンクするために以下のコードを使えます。
package net.learn2develop.linking;
import android.app.Acrivity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//---link to Activity2---
Intent i = new Intent("net.learn2develop.Activity2");
startActivity(i);
}
}
他のアクティビティにリンクするために、Intentオブジェクトを作り、
ターゲットとなるアクティビティの名前への
コンストラクタをセットします。
(AndroidManifest.xmlファイルの<action>要素にセットするように)
そして、アクティビティの開始させるためにstartActivity()メソッドを
呼び出します。または、Intentオブジェクトを作り、
ターゲットとなるアクティビティの名前をセットするために
setAction()メソッドを呼び出します。
//---link to Activity2---
Intent i = new Intent();
i.setAction("net.learn2develop.Activity2");
startActivity(i);
このコード部は、同じアプリケーションの中にあるアクティビティの
呼び出しによく使われます。
もし、作っているアプリケーション内のアクティビティを
呼び出したくなった場合には、
下記のようにクラス名を使って呼び出すこともできます。
//---link to Activity2---
Intent i = new Intent(this, Activity2.class);
もし、昔作った他のアプリケーションから他のアクティビティを
呼び出させたく無い場合には、単純に、<action>要素を
<intent-filter>要素から削除するだけで良いです。
<activity
<android:name=".Activity2"
<android:label="@string/app_name" >
<intent-filter>
<!--
<action android:name="net.learn2develop.Activity2" />
-->
<category android:name="android.intent.category.DEFAULT" />
<intent-filter>
<activity>
もし、デバイスに無いアクティビティを呼びだそうとしている
場合には、アプリケーションはクラッシュします。
その時ディスプレイには、
Unfortunately, Linking has stopped.
と表示されます。
アプリケーションが不意に止まらないようにするために、
Intent.createChooser()メソッドと一緒に、
startActivity()メソッドを呼び出します。
このcreateChooser()メソッドは、Intentオブジェクトをとり、
アクティビティが見つからなければ文字列を表示します。
または、複数のアクティビティがIntentオブジェクトを
満たしているとわかったときなどがそうです。
Intent i = new Intent("net.learn2develop.Activity2");
startActivity(Intent.createChooser(i, "choose an application"));
アクティビティが見つからなければ
No apps can perform this action
と表示されます。
複数のアクティビティが見つかった場合には、
アプリケーションの名前が
並んで表示されアプリケーションが選べる様に表示されます。
createChooser()メソッドを使うときに注意するのは、
アクティビティ名を指定することが必要になることです。
(前の例でいうと、net.learn2develop.Activity2のように)
指定するアクティビティ名は実行させているもので、
そのクラス名ではありません。
以下のコードのようにすると動きません。
//---the following will never link to Activity2---
Intent i = new Intent(this, Activity2.class);
startActivity(Intent.createChooser(i, "Choose an application"));
|
【用語解説】
XML
HTMLと同じような言語ですが、
すべての型の複雑なデータ構造を
送信するための設計ができる
ファイル型式。
オブジェクト
ある手続きを持った
データアイテムで、
他の手続きと関連づけされるもの
metaタグ
ウェブページに与える
情報の宣言につかわれ
検索エンジン・ウェブアプリ
などにウェブページの内容を
伝える役目をする。
metaタグの内容は
ページ内に表示されない。
コンストラクタ
オブジェクト指向
プログラミングで使われ
新しいオブジェクトが
作られ時に呼び出される
メソッドのこと。
クラス
オブジェクト指向
プログラミングでの
オブジェクトの型
オブジェクト指向プログラミング
プログラミングの
方式のことで、
プログラマはデータ型を
定義できるだけでなく
自動的にデータ型と
メソッドを関連付け
できる
アクティビティ
Androidにおける
アクティビティは
Androidアプリの画面に
相当するもの
ボタンやウェブページ
など表示されている
すべてのもののこと。
|