1

ダイアログとして表示されるアクティビティがあります。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setTheme(android.R.style.Theme_Dialog);
    setFinishOnTouchOutside(true);
}

ユーザーが [Activity-Dialog] ウィンドウの外側に触れて [Activity-Dialog] を閉じると、[Activity] は終了します。

このイベントにリスナーを設定するにはどうすればよいですか?

電話できるようにしたいので、これは重要です

setResult(intResultCode, intent);

終了直前。

onPause() で setResult() を呼び出すのは、すでに遅すぎる可能性があります。

4

3 に答える 3

4

なぜそんなに苦戦するの?Avtivityのfinish()メソッドをオーバーライドするだけです...

@Override
public void finish() {
    setResult(int resultCode, Intent data);
    super.finish();
}
于 2013-12-04T12:56:12.847 に答える
0

最初に置く

dialog.setCanceledOnTouchOutside(true) 

そしてその後の使用

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    Rect dialogBounds = new Rect();
    getWindow().getDecorView().getHitRect(dialogBounds);

    if (!dialogBounds.contains((int) ev.getX(), (int) ev.getY())) {
        // Tapped outside so we finish the activity
        this.finish();
    }
    return super.dispatchTouchEvent(ev);
}
于 2013-12-04T12:36:52.410 に答える