只有对Context的引用时关闭当前活动

时间:2011-03-21 11:04:27

标签: android android-activity android-context

如果我引用Context,是否可以完成当前活动?

我没有对当前活动的引用。

7 个答案:

答案 0 :(得分:211)

是的,有演员:

((Activity) ctx).finish();

答案 1 :(得分:11)

在我的案例中工作之后,

我需要在AsyncTask onPostExcute()中完成我的活动。

我的AsyncTask类是单独的公共类,它有一个带有Context的参数的构造函数。

((Activity)(mContext)).finish();

只有以上对我有用......无论如何,我从@ 2red13和@lucy的答案得到了这个想法...感谢所有...

答案 2 :(得分:11)

我知道这是一个老帖子,但也许以这种方式称呼它是个好主意:

if(context instanceof Activity){
                ((Activity)context).finish(); }

这样我们确保不会得到任何不必要的ClassCastExceptions

答案 3 :(得分:1)

如果您有权访问要完成的​​活动的运行视图(例如,您在点击侦听器中),则可以执行以下操作:

((Activity)getContext()).finish();

(感谢2red13让我来这里)。

答案 4 :(得分:1)

如果您使用以下方式开始活动:

startActivityForResult(i, 1);

您可以调用finishActivity(1)来完成使用该请求代码启动的所有活动,如下所示:

((Activity)getContext()).finishActivity(1);

在我的情况下,我需要在处理程序postDelayed中使用一个。使用此功能,您可以确定要完成的活动。希望它有所帮助!

答案 5 :(得分:0)

关闭偏好活动时遇到了同样的问题。这是我做的:

<form class="form-horizontal" method="POST" enctype="multipart/form-data">
  <div class="form-group">
    <label for="selectCandy" class="control-label col-sm-0"></label>
    <div class="col-sm-4">
      <select class="form-control" id="selectC">
        <option id="candy1">Lollipop</option>
        <option id="candy2">Haribo Gummies</option>
        <option id="candy3">Gum</option>
      </select>
    </div>
  </div>
</form>
<div id="noCandy1">
  <select class="form-control">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
  </select>
</div>
<div id="noCandy2">
  <select class="form-control">
    <option>1</option>
    <option>2</option>
  </select>
</div>
<div id="noCandy3">
  <select class="form-control">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
  </select>
</div>

答案 6 :(得分:-3)

尝试:

((Activity) context.getApplicationContext()).finish();