gpt4 book ai didi

android - 方向改变时应用程序崩溃并抛出 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 16:06:04 25 4
gpt4 key购买 nike

我正在使用 Fragment 并将 AsyncTask 放入其中以执行一些面向网络的任务。一切正常。当我将方向从 protrait 更改为 landscape 时,它​​也很好。但是当我再次将方向更改为 portrait 时,它崩溃了。这是我的尝试代码。

public class ProblemStatistics extends SherlockProgressFragment {
View mContentView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mContentView = inflater.inflate(R.layout.submission_statistics,
container, false);
return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setContentShown(false);
setContentView(mContentView);
Bundle bundle = this.getArguments();
int problemNo = 100;
if (bundle != null) {
problemNo = bundle.getInt("problem_no", problemNo);
}
new GetProblemStatisticTask().execute(CommonUtils.SPECIFIC_PROBLEM_URL + problemNo);
}

@Override
public void onStop() {
((MainActivity) getSherlockActivity()).setProblemStatistics(false);
super.onStop();
}

protected class GetProblemStatisticTask extends
AsyncTask<String, Void, InputStreamReader> {

@Override
protected InputStreamReader doInBackground(String... params) {
return new JSONDownloader().getJSONStringFromUrl(params[0]);
}

@Override
protected void onPostExecute(InputStreamReader isr) {
super.onPostExecute(isr);
// other stuff and parsing related code
layout.addView(gView);
setContentShown(true);
}
}

}

这是我的错误日志:

08-16 00:07:18.025: E/AndroidRuntime(542): java.lang.NullPointerException
08-16 00:07:18.025: E/AndroidRuntime(542): at me.kaidul.uhunt.LatestSubmissions$GetSubmissionsListTask.onPostExecute(LatestSubmissions.java:84)
08-16 00:07:18.025: E/AndroidRuntime(542): at me.kaidul.uhunt.LatestSubmissions$GetSubmissionsListTask.onPostExecute(LatestSubmissions.java:1)
08-16 00:07:18.025: E/AndroidRuntime(542): at android.os.AsyncTask.finish(AsyncTask.java:417)
08-16 00:07:18.025: E/AndroidRuntime(542): at android.os.AsyncTask.access$300(AsyncTask.java:127)
08-16 00:07:18.025: E/AndroidRuntime(542): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
08-16 00:07:18.025: E/AndroidRuntime(542): at android.os.Handler.dispatchMessage(Handler.java:99)
08-16 00:07:18.025: E/AndroidRuntime(542): at android.os.Looper.loop(Looper.java:123)
08-16 00:07:18.025: E/AndroidRuntime(542): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-16 00:07:18.025: E/AndroidRuntime(542): at java.lang.reflect.Method.invokeNative(Native Method)
08-16 00:07:18.025: E/AndroidRuntime(542): at java.lang.reflect.Method.invoke(Method.java:521)
08-16 00:07:18.025: E/AndroidRuntime(542): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-16 00:07:18.025: E/AndroidRuntime(542): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-16 00:07:18.025: E/AndroidRuntime(542): at dalvik.system.NativeStart.main(Native Method)

最佳答案

当手机的方向发生变化时,您的 Activity 将被销毁并重新创建。

您可以在 AndroidManifest.xml 中使用它。

activity
your activity...
android:configChanges="orientation|keyboardHidden|screenSize">
activity

已编辑:

作为此答案的补充:

文档说:“fragment 必须始终嵌入到 Activity 中, fragment 的生命周期直接受宿主 Activity 生命周期的影响。例如,当 Activity 暂停时,其中的所有 fragment 也会暂停,当 Activity 暂停时被摧毁,所有 fragment 也被摧毁。”

这是链接 http://developer.android.com/guide/components/fragments.html

您不能只为某些 fragment 重新创建 Activity ,您应该重新考虑您的方法。

关于android - 方向改变时应用程序崩溃并抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com