自作ダイアログからアクティビティの終了

別クラスの自作ダイアログから、呼び出し元アクティビティを終了する

検索してみたが、こういう方法が不自然なのか、日本語のサイトが見つからなかった。
ひょっとして、私は変な方向に進んでいたりするのか。

とにかく、やりたいことは以下のようなこと。

1.アクティビティAからアクティビティBに遷移。
2.アクティビティBからダイアログを表示
3.ダイアログのOKボタンでアクティビティBを終了。

NextActivity押下で画面遷移
ShowDialog押下でダイアログ表示 FINISH押下でメインアクティビティに戻る

今回、Activityのソースは省略。掲載はDialogのみ。

package com.papiroidsensei.testdialog03;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;

public class CustomDialog extends Dialog {
	
	private Context context;
	private View.OnClickListener listener = new View.OnClickListener() {
		
		@Override
		public void onClick(View v) {
			int id = v.getId();
			if (id == R.id.btnFinish) {
				finishActivity();
			}
		}
	};
	
	public CustomDialog(Context context) {
		super(context);
		this.context = context;
	}
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dialog);
        LayoutParams lp = getWindow().getAttributes();
        lp.width = LayoutParams.MATCH_PARENT;
        getWindow().setAttributes(lp);
		setTitle("Dialog");
		Button btnFinish = (Button)findViewById(R.id.btnFinish);
		btnFinish.setOnClickListener(listener);
	}

	private void finishActivity() {
		// 呼び出し元のアクティビティを特定する
		this.setOwnerActivity((Activity)context);
		
		// ここ!呼び出し元のアクティビティの終了
		getOwnerActivity().finish();
	}
}
         

dismiss()メソッドは呼んでない。
Activityがfinish()したら、dialogも終了するので。

今回は、api level 8 (Android2.2)

ページのトップへ戻る