ページ遷移(1) ( intent インテント)

ページ遷移(1) ( intent インテント)

アプリ内で違う画面(ページ)に移動する簡単な方法が2つあります。

  1.  違うActivity(JAVAファイル)に移動する【intent インテント】
  2. 違うlayoutのxmlを読み込む

まずは1つ目の違うActivityに移動する方法からご紹介します。

異なるActivityへの移動はintentという形式で連携しながら遷移します。

1:新規クラス≒アクティビティを追加

0007-0001

名前: 任意の名前
スーパークラス: android.app.Activity

0007-0002

2:新しいActivityでのレイアウト定義XMLを作成

0007-0003

今回はこんな感じにしました
test2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
	
	<TextView android:layout_height="wrap_content" android:text="ページ移動しました" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/textView1" android:layout_width="wrap_content">
	</TextView>
 
</LinearLayout>

3:新しいAcitivtyのレイアウトを2で作ったtest2.xmlにする

package com.McBechtel.test;

import android.app.Activity;
import android.os.Bundle;

public class TestActivity2 extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test2);
}
}

setContentView(R.layout.test2);
の部分ですね。

4:マニフェストファイルを編集

マニフェストと聞くと、最近の政治を思い浮かべてしまいますが
マニフェストファイルとはActivityを管理するファイルです。

全Activityリストや、最初に起動するActivityは何?などの情報が記載されています。
Activityを追加した場合はこのマニフェストファイルに記載が必要です。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.McBechtel.test" android:versionCode="1" android:versionName="1.0">
    
    <uses-sdk android:minSdkVersion="8" />
 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".TestActivity" 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=".TestActivity2" android:label="@string/app_name">
        </activity>
 
    </application>
</manifest>
<activity android:name=".TestActivity2" android:label="@string/app_name">
</activity>

が追加した部分です。

1個目のタグ内の部分が
アプリ起動時に呼ばれるActivityに関する記述です。

5:ページ遷移するボタンを最初のActivityに追加

<Button android:text="移動" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content">
</Button>

6:ページ遷移動作を記述

ボタンクリック時の動作部分に追加

Intent intent = new Intent(this, TestActivity2.class);
startActivityForResult(intent, 0);

これが移動させるためのコードになります。 これをボタンを押したら呼ばれるonClick内に記載すればOKです!

public class TestActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */ 
 
    private Button button1,button2;         //ボタン用変数(1)
    private TextView text1;            //テキスト用変数(2)
    private int clickcount=0;        //ガァ~表示用 カウンター
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        //(1)で作成した変数と、XMLで作ったボタン(button1)を紐付け
        button1=(Button)findViewById(R.id.button1);        
        //button1のクリックを通知する機能を実装
        button1.setOnClickListener(this);
 
        //(1)で作成した変数と、XMLで作ったボタン(button1)を紐付け
        button2=(Button)findViewById(R.id.button2);
        //button1のクリックを通知する機能を実装
        button2.setOnClickListener(this);
 
        //(2)で作成した変数と、XMLで作ったテキストを紐付け
        text1  =(TextView)findViewById(R.id.textView1);
 
    }
 
    //---------------------------
    //ボタンがクリックされたら呼ばれる関数
    //---------------------------
    public void onClick(View v) {
        // TODO 自動生成されたメソッド・スタブ
 
        if(v==button1){        //ボタン1の場合
        if(clickcount%2==0){
                text1.setText("gaa");        //text1をがぁ~に
        }else{
                text1.setText(" ");            //text1を消す
        }
        clickcount++;
        }else if(v==button2){
            Intent intent = new Intent(this, TestActivity2.class);
            startActivityForResult(intent, 0);
        }
 
    }
 
}
designer

Leave your message