Add Me!Close
Add Me!Open Categories Menu

Andriod Intent – アクティビティの切り替え

  • インテント (Intent) は、プログラムの実行に関する情報を管理するメッセージです。

    Android のシステムは、何かのプログラムを実行する必要が生ずると、そのための情報を インテント という型にまとめて発行します。

    それぞれのプログラムには、自分がどういうインテントを受け取ることができるかという情報が記述されており、
    発行したインテントによって特定のプログラムを実行できるようになっているのです。

    インテントに関する情報は、アプリの設定ファイル(AndroidManifest.xml)の インテントフィルター に記述されています。

     

    // AndroidManifest.xml 記入例

    <activity android:name=".IntentActivity" android:label="@string/app_name">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    

     

    上記の例では、

    LAUNCHER カテゴリ(この Activity が Task の初期 Activity であり、トップレベルのアプリケーションランチャに表示されることを指示します。)で、

    MAIN アクション(データ入力なしかつ出力の返却なしで、Task の初期 Activity として開始する。 )として設定されていることを意味しています。

    結果として、アプリを起動したときにこのアクティビティが実行されます。

     

    インテントには「明示的インテント」と「暗黙的インテント」の2種類が存在します。

    明示的インテントでは、アクティビティ を指定してインテントを送ります。
    一方、暗黙的インテントはアクティビティを指定せずに送るインテントで、どのアクティビティが処理を行うかはインテントフィルタに応じて決定されます。

     

    明示的インテントを使って、別のアクティビティ を起動する場合は Intent クラスのインスタンスを生成し、

     

    Intent intent = new Intent(Context,Class);
    

     

    startActivity メソッドを呼び出します。

     

         startActivity(intent);
    

     

    これで、現在起動している Activity から、起動したい Activity へと切り替わります。

    Context は現在の Activity インスタンスを指定、
    Class は起動する Activity の Class を指定します。

    Context とは現在のアプリやオブジェクトの状態、何から起動されたかどういう状態か、何にアクセスしようとしているか、といった情報を受け渡すハンドルのことです。

     

    Activity は、クラスを用意しただけでは使えるようになりません。このアプリにはどういう Activity があるのかを AndroidManifest.xml に記述する必要があります。

     

    // AndroidManifest.xml 記入例

    <activity
    android:name=".OtherActivity"
    android:label="other activity">
    </activity>
    

     

    以下は 明示的インテント (intent) を使って、別のアクティビティ を起動する場合のサンプルコードです。

     

    // MainActivity.java

    package com.android.app;
    
    import android.app.*;
    import android.content.*;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    
        public void doAction(View view) {
            Intent intent = new Intent(MainActivity.this,com.android.app.OtherActivity.class);
    		this.startActivity(intent);
        }
    }
    

     

    // main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:weightSum="1" >
    
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/text_text1"
            android:id="@+id/text1"
            android:textSize="20dip" />
    
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_label"
            android:onClick="doAction" />
    
    </LinearLayout>
    

     

    // OtherActivity.java

    package com.android.app;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    
    public class OtherActivity extends Activity {
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.other);
        }
    
        public void doAction(View view) {
        	Intent intent = new Intent(OtherActivity.this,com.android.app.MainActivity.class);
        	this.startActivity(intent);
        }
    }
    

     

    // other.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:weightSum="1" >
    
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/text_text2"
            android:id="@+id/text2"
            android:textSize="20dip" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_label"
            android:onClick="doAction" />
    
    </LinearLayout>
    

     

    // strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="hello">Hello World!</string>
        <string name="text_text1">Hello MainActivity!</string>
        <string name="text_text2">Hello OtherActivity!</string>
        <string name="app_name">Intent Practice</string>
        <string name="button_label">Click me!</string>
    
    </resources>
    

     

    // AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.app"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk android:minSdkVersion="14" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".OtherActivity"
                android:label="other activity">
            </activity>
        </application>
    
    </manifest>
    

     

    [ソースコード] http://psy-phy.com/products/detail.php?product_id=22

     

    Posted By takami

    Leave a Reply

    You must be logged in to post a comment.

    タグ

     

    2014年11月
    « 2月    
     12
    3456789
    10111213141516
    17181920212223
    24252627282930