画面を立ち上げて、
ボタンを押下するとsub画面が立ち上がるアプリです。
サブ画面でアプリの戻るボタンを押すと、
サブ画面が終了して、メイン画面に戻る仕様です。
■メインアクティビティ
package com.example.finishactivity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
private int iNo = 1;
private final int iMAIN = 0;
private final int iSUB = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(getApplicationContext(), "初期呼び出し", Toast.LENGTH_SHORT).show();
//ボタンの作成
Button button = new Button(getApplication());
//ボタンに表示される文字列を設定
button.setText("サブ画面呼び出し");
//ボタンにIDを設定
button.setId(iSUB);
button.setOnClickListener(this);
addContentView(button, new LinearLayout.LayoutParams( 350,70));
}
public void onClick(View view){
//どのボタンを押すかの判定
switch(view.getId()){
case iSUB:
Intent intent = new Intent(this, SubActivity.class);
//Activityに引数を渡す
intent.putExtra("count", String.valueOf(iNo));
iNo += 1;
//Activityを開始。iMAINで呼び出し元のActivityを判断できるようにする
startActivityForResult(intent, iMAIN);
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//LOGで引数が返ってきているかを確認しよう
Log.d("onActivityResule","requestCode:" + requestCode + " resultCode:" + resultCode);
//requestCodeでそのActivityを呼び出したActivityを判断
if (requestCode == iMAIN){
//resultCodeで呼び出し先からのActivityの引数を取得
if (resultCode == RESULT_OK){
Toast.makeText(getApplicationContext(), "「サブ画面から戻ったよ」のお知らせ", Toast.LENGTH_SHORT).show();
}
}
}
}
■呼び出しされるActivity
package com.example.finishactivity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.KeyEvent;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SubActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// テキストビューの生成
TextView textView = new TextView(getApplication());
//呼び出し元の引数の取得
Intent i = getIntent();
//Key(count)から、Itemを取得
String keyword = i.getStringExtra("count");
textView.setText(keyword + "回目");
addContentView(textView, new LinearLayout.LayoutParams( 100,70));
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// BackBtnアクション
if(keyCode==KeyEvent.KEYCODE_BACK){
//戻るActivity先に引数を渡す
setResult(RESULT_OK);
//Activityの終了
this.finish();
return true;
}
return false;
}
}
■マニフェストファイル
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.finishactivity"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.finishactivity.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="com.example.finishactivity.SubActivity"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
こんな感じです。
実行すると
■初期画面
■ボタン押下後■戻るボタン押下後
■この処理を繰り返すと
基本的なActivityの動かし方でした。
//Activityに引数を渡す
intent.putExtra("count", String.valueOf(iNo));
こちらの処理で呼び出し元のActivityから、新しい
Activityに引数を渡しています。
Intent i = getIntent();
String keyword = i.getStringExtra("count");
こちらで、先ほど渡した引数を取得しています。
また、
setResult(RESULT_OK);
で、呼び出し先のActivityから、呼び出し元の
Activityに引数を渡しています。
呼び出し先の処理が成功したら1
呼び出し先の処理が失敗したら0
を返す様な形にすると、呼び出し元のActivityに
戻った時に処理結果を取得できます。
呼び出し先の処理が成功したら1
呼び出し先の処理が失敗したら0
を返す様な形にすると、呼び出し元のActivityに
戻った時に処理結果を取得できます。
0 件のコメント:
コメントを投稿