web-dev-qa-db-ja.com

ダイアログクラスのアクティビティを終了します

私のMainActivityで私は電話します

_ myDialog dialog = new myDialog(MainActivity.this);
 dialog.show();
_

myDialogは、ダイアログをカスタマイズする独自のクラスです。ダイアログにはボタンがあります。ボタンを押すとMainActivityとダイアログが終了/非表示になるようにしたいのですが、それから別のアクティビティを開始します。 myDialogクラスのonClickListenerで、MainActivityfinish()である必要があるとどのように言うことができますか?

ダイアログの短縮コード:

_public class myDialog extends Dialog implements OnClickListener {

    void onClick() {
        Intent menu = new Intent(getContext(), menu.class);
        getContext().startActivity(menu);
    }
}
_
12
L3n95

以下のようにアクティビティを終了できます...

_Intent intent = new Intent(context, YourSecondActivity.class);
context.startActivity(intent);
((Activity) context).finish();
_

更新:

カスタムダイアログクラスのコンストラクタで、次のようにアクティビティコンテキストを取得します...

_Context mContext;

public myDialog(Context context) {
    super(context);
    this.mContext = context;
}
_

次に、onClick()メソッドで、以下のようにアクティビティを終了します。

_@Override
public void onClick(View v) {

    Intent menu = new Intent(mContext, menu.class);
    mContext.startActivity(menu);
    ((Activity) mContext).finish();
}
_
22
Hamid Shatu

まず、ダイアログクラスで、呼び出し元アクティビティのコンテキストを渡します。たとえば、MainActivit.class context

まず、ダイアログを閉じます

//so as to avoid the window leaks as on destroying the activity it's context would also get vanished.
    dialog.dismiss();

その後

((Activity) context).finish();
6
Arpit Garg