gpt4 book ai didi

java - Android JSON - AsyncTask DoInBackground NullPointer

转载 作者:行者123 更新时间:2023-11-30 09:20:16 28 4
gpt4 key购买 nike

我正在开发一个简单的应用程序,它将 POST 数据发送到 php 脚本,然后获取 JSON 响应并将其放入 ListView 中。我的 UI 正常工作,并且我从脚本中获得了 JSON 响应,但是我的应用程序崩溃并且调试日志仅显示 fatal error: main,仅指向我的 AsyncTask。我的 JSON 是否没有被正确解析?

最佳答案

可能性一

第一步归功于@微博

将此移至您的 onCreate,doInBackground 无法执行任何 ui 操作。它是 AsyncTask 的基本规则。如果必须,请将 AsyncTask 类移动到需要它的 Activity 中。确保不要将其设为静态,因为您需要 onCreate 的 findViewById

    final Spinner numPoke = (Spinner) findViewById(R.id.SpinnerNumPokemon);
final Spinner dexRegion = (Spinner) findViewById(R.id.SpinnerRegion);
final Spinner pokeType = (Spinner) findViewById(R.id.SpinnerType);
final ToggleButton incNFE = (ToggleButton) findViewById(R.id.toggleNFE);
final ToggleButton incLegendary = (ToggleButton) findViewById(R.id.toggleLegendary);

第 2 步

在你的onPostExecute中,第一条语句应该有

super.doPostExecute(result) ;

可能性二

您的listpokemonListnull,检查一下。使用 Toast 的 进行调试。

建议

来自 Android documentation ,请阅读 4 个步骤。

4个步骤

当一个异步任务被执行时,任务会经历4个步骤:

  1. onPreExecute(),在执行任务之前在 UI 线程上调用。此步骤通常用于设置任务,例如通过在用户界面中显示进度条。
  2. doInBackground(Params...),在 onPreExecute() 完成执行后立即在后台线程上调用。此步骤用于执行可能需要很长时间的后台计算。异步任务的参数传递给这一步。计算结果必须由这一步返回,并传回最后一步。此步骤还可以使用 publishProgress(Progress...) 来发布一个或多个进度单元。这些值在 onProgressUpdate(Progress...) 步骤中发布在 UI 线程上。
  3. onProgressUpdate(Progress...),在调用 publishProgress(Progress...) 后在 UI 线程上调用。执行时间未定义。此方法用于在后台计算仍在执行时在用户界面中显示任何形式的进度。例如,它可用于为进度条设置动画或在文本字段中显示日志。
  4. onPostExecute(Result),在后台计算完成后在 UI 线程上调用。后台计算的结果作为参数传递给该步骤。

关于java - Android JSON - AsyncTask DoInBackground NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17499441/

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