▼Androidメモ▼
アクティビティの連携


アクティビティの連携を行うプログラムを作成する。



ソースコード
MyActivityEx.java
package net.npaka.myactivityex;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

//自作アクティビティの呼び出し
public class MyActivityEx extends Activity 
    implements View.OnClickListener {
    private final static int REQUEST_TEXT=0;//テキストID
    
    private TextView textView;//テキストビュー
    private Button   btnCall; //呼び出しボタン
        
    //初期化
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        //レイアウトの生成
        LinearLayout layout=new LinearLayout(this);
        layout.setBackgroundColor(Color.rgb(255,255,255));
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);          

        //呼び出しボタンの生成
        btnCall=new Button(this);
        btnCall.setText("MyActivityの呼び出し");
        btnCall.setOnClickListener(this);   
        setLLParams(btnCall);
        layout.addView(btnCall);        
        
        //テキストビューの生成
        textView=new TextView(this);
        textView.setText("This is TEST!");        
        textView.setTextColor(Color.rgb(0,0,0));
        setLLParams(textView);
        layout.addView(textView);        
    }

    //ボタンクリックイベントの処理
    public void onClick(View v) {
        if (v==btnCall) {
            //明示的なインテントの生成
            Intent intent=new Intent(this,
                net.npaka.myactivityex.MyActivity.class);
            
            //インテントへのパラメータ指定
            intent.putExtra("text",textView.getText().toString());
            
            //アクティビティの呼び出し
            startActivityForResult(intent,REQUEST_TEXT);
        }
    } 
    
    //アクティビティ呼び出し結果の取得
    @Override
    protected void onActivityResult(int requestCode,
        int resultCode,Intent intent) {
        if (requestCode==REQUEST_TEXT && resultCode==RESULT_OK) {
            //インテントからのパラメータ取得
            String text="";
            Bundle extras=intent.getExtras();
            if (extras!=null) text=extras.getString("text");
            
            //テキストビューへの指定
            textView.setText(text);
        }
    }    

    //ライナーレイアウトのパラメータ指定
    private static void setLLParams(View view) {
        view.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    }  
}


MyActivity.java
package net.npaka.myactivityex;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

//自作アクティビティ
public class MyActivity extends Activity 
    implements View.OnClickListener {
    private EditText editText;//エディットテキスト
    private Button   btnOK;   //OKボタン
    
    //初期化
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        //キャンセルの戻り値の指定
        setResult(Activity.RESULT_CANCELED);

        //インテントからのパラメータ取得
        String text="";
        Bundle extras=getIntent().getExtras();
        if (extras!=null) text=extras.getString("text");

        //レイアウトの生成
        LinearLayout layout=new LinearLayout(this);
        layout.setBackgroundColor(Color.rgb(255,255,255));
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);               
        
        //OKボタンの生成
        btnOK=new Button(this);
        btnOK.setText("OK");
        btnOK.setOnClickListener(this);
        setLLParams(btnOK);
        layout.addView(btnOK);

        //エディットテキストの生成
        editText=new EditText(this);
        editText.setText(text);
        setLLParams(editText);
        layout.addView(editText);    
    }

    //ボタンクリックイベントの処理
    public void onClick(View v) {
        if (v==btnOK) {
            //OKの戻り値の指定
            Intent intent =new Intent();
            intent.putExtra("text",editText.getText().toString());
            setResult(Activity.RESULT_OK,intent);
            
            //アクティビティの終了
            finish();
        }
    } 
    
    //ライナーレイアウトのパラメータ指定
    private static void setLLParams(View view) {
        view.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    }  
}


AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.npaka.myactivityex"
    android:versionCode="1"
    android:versionName="1.0">
    <application 
        android:icon="@drawable/icon" 
        android:label="@string/app_name">

        <activity 
            android:name=".MyActivityEx"
            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="MyActivity">
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="3" />
</manifest> 


−戻る−