Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 仅引用上下文时关闭当前活动_Android_Android Activity_Android Context - Fatal编程技术网

Android 仅引用上下文时关闭当前活动

Android 仅引用上下文时关闭当前活动,android,android-activity,android-context,Android,Android Activity,Android Context,如果我参考了上下文,是否可以完成当前活动 我没有当前活动的参考。是,演员阵容: ((Activity) ctx).finish(); 如果您有权访问要完成的活动的运行视图(例如,您在单击侦听器中),则可以执行以下操作: ((Activity)getContext()).finish(); (感谢2red13把我带到这里)。在我的情况下,下面的方法奏效了 我需要在AsyncTask onPostExecute()中完成我的活动 其中,我的AsyncTask类是独立的公共类,它有一个带有上下文参

如果我参考了
上下文
,是否可以完成当前活动

我没有当前活动的参考。

是,演员阵容:

((Activity) ctx).finish();

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

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

(感谢2red13把我带到这里)。

在我的情况下,下面的方法奏效了

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

其中,我的AsyncTask类是独立的公共类,它有一个带有上下文参数的构造函数

((Activity)(mContext)).finish();
只有上面这些对我有用。。。不管怎样,我是从@2red13和@lucy answers那里得到这个想法的。。。感谢所有…

尝试:

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

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

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

通过这种方式,如果您使用以下方法启动活动,我们将确保不会出现任何不必要的ClassCastException

startActivityForResult(i, 1);
您可以调用finishActivity(1)来完成以该请求代码开始的任何活动,如下所示:

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

在我的例子中,我需要在处理程序中使用一个。使用此选项,您可以确定正在完成的活动。希望有帮助

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

public class T2DPreferenceActivity extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          getFragmentManager().beginTransaction().replace(android.R.id.content,
                new T2DPreferenceFragment()).commit();
    }

    public static class T2DPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.server_screen_preference);
            Preference testServicePreference = getPreferenceScreen().findPreference("PREFERRED SERVER");
            testServicePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    T2DPreferenceActivity.closeActivity(getActivity());
                    return true; //returning true still makes the activity handle the change to preferences
                }
            });
        }

        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            ListView lv = (ListView)view.findViewById(android.R.id.list);
            ViewGroup parent = (ViewGroup)lv.getParent();
            parent.setPadding(0, 100, 0, 0);
        }
    }

    protected static void closeActivity(Activity activity) {
        activity.finish();
    }
}

只有当它是当前的活动时,否则非当前活动将完成:)如果
上下文实际上是应用程序上下文,这可能会导致问题。如果上下文是应用程序上下文,如何执行该操作。我正在类中运行计时器线程,如果时间结束,我想从该类关闭当前活动。我在我的onPostExecute()。我想关闭当前活动,但它将是动态的。我正在从任何活动调用AsyncTask,并获得类强制转换异常。任何帮助,我看不出有什么问题。如果是应用程序上下文,classcastexception将强制关闭你的应用程序,并用它完成所有活动!不要使用这个“解决方案”!您不能猜测(可能您总是错的)您的应用程序上下文与您的活动相同。看看这篇文章:)这与
((活动)mContext.finish()
)现在的形式不同。这没有为我关闭活动