【问题标题】:Finish activity in dialog class在对话框类中完成活动
【发布时间】:2014-04-24 00:38:38
【问题描述】:

在我的MainActivity我打电话

 MyDialog dialog = new MyDialog(MainActivity.this);
 dialog.show();

MyDialog 是我自己的类,我在其中自定义对话框。 对话框中有一个按钮。我希望MainActivity 和对话框在按下按钮时完成/消失,因为然后我开始另一个活动。 我怎么能在MyDialog 类中,在onClickListener 中说MainActivity 应该finish()

我的对话框的缩短代码:

public class MyDialog extends Dialog implements OnClickListener {

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

【问题讨论】:

  • 发布你的对话代码。
  • 如果我在对话框类中说MainActivity,就没有finis()
  • 对话框代码有点长,但我有: public class myDialog extends Dialog implements android.view.View.OnClickListener{} 并在我调用的 onClick 方法中: Intent menu = new Intent(getContext( ), 菜单.类); getContext().startActivity(菜单);我想在那里完成 MainActivity 和对话框。
  • 查看我的更新答案。

标签: android dialog activity-finish


【解决方案1】:

您可以按以下方式完成您的活动...

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();
}

【讨论】:

  • 然后他在 Intent 菜单上给了我一个 NullPointerException = new Intent(mContext, menu.class);行
  • 您是否按照我的建议初始化了mContext
【解决方案2】:

首先在您的对话框类中传递调用者活动的上下文,例如 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();

【讨论】:

  • 我该怎么做:“传递调用者活动的上下文说 MainActivit.class 上下文”?
  • @Lars3n95 是的,说您正在使用 MainActivity 中的对话框类,然后您在对话框类中创建一个构造函数,并将参数作为上下文上下文。现在在课堂的每个地方都使用这个上下文来创建对话框并完成当前的活动。
猜你喜欢
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多