如果我有参考Context
,可以完成当前活动吗?
我没有提及当前活动。
如果我有参考Context
,可以完成当前活动吗?
我没有提及当前活动。
Answers:
是的,使用强制转换:
((Activity) ctx).finish();
Context
实际上是应用程序上下文,则可能导致问题。
就我而言,以下方法有效
我需要在AsyncTask onPostExcute()中完成我的活动。
我的AsyncTask类是单独的public类,它具有带有Context参数的构造函数。
((Activity)(mContext)).finish();
只有以上这些对我有用...总之我从@ 2red13和@lucy答案中得到了这个主意...感谢所有人...
((Activity) mContext).finish()
。
我知道这是一篇旧文章,但也许这样称呼可能是一个好主意:
if(context instanceof Activity){
((Activity)context).finish(); }
这样,我们确保我们不会收到任何不必要的ClassCastExceptions
如果您使用以下方法启动活动:
startActivityForResult(i, 1);
您可以调用finishActivity(1)完成以该请求代码开始的所有活动,如下所示:
((Activity)getContext()).finishActivity(1);
就我而言,我需要在处理程序postDelayed中使用一个。使用此工具,您可以确定要完成的活动。希望能帮助到你!
关闭首选项活动时,我遇到了同样的问题。这是我所做的:
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();
}
}
尝试:
((Activity) context.getApplicationContext()).finish();