gpt4 book ai didi

java - 在 Asynctask 的 onPostExecute() 方法中更改 fragment

转载 作者:太空狗 更新时间:2023-10-29 13:13:47 24 4
gpt4 key购买 nike

我试图隐藏进度条并在 onPostExecute() 的 fragment 中的编辑文本上设置错误消息但我的应用程序不断崩溃。我需要一些关于如何正确执行此操作的帮助。我将为此项目对我的 fragment 进行大量更新,因此我需要知道从 OnPostExecute() 更新 fragment 的正确方法方法。

我尝试创建 Fragment 的对象类,然后使用我尝试访问的对象 EditText progressBar 方法称为 showProgress()但我遇到运行时错误。

  protected void onPostExecute(String result) {
super.onPostExecute(result);
String jsonStr = result;
SellerRegisterFragment sr = new SellerRegisterFragment();
Toast toast = null;
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
String query_result = jsonObj.getString("query_result");
if (query_result.equals("SUCCESS")) {
toast = null;
Toast.makeText(context, "Registered successfully. You can now Login", Toast.LENGTH_SHORT).show();
if (toast == null || toast.getView().getWindowVisibility() != View.VISIBLE) {
context.startActivity(new Intent(context, SellerLoginOrRegisterActivity.class));
}
}
else if (query_result.equals("DUPLICATE")) {
toast = null;
Toast.makeText(context, "Account for the given URL already exists", Toast.LENGTH_SHORT).show();
sr.showProgress(false);
}
else if (query_result.equals("FAILURE")) {
Toast.makeText(context, "Data could not be inserted. Signup failed.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Couldn't connect to remote database.", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(context, "Error parsing JSON data."+"...... "+ jsonStr, Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show();
}
}

最佳答案

您正在 onPostExecute 中创建 Fragment 实例。然后使用Fragment的成员变量。仅仅创建 Fragment 的实例不会做任何事情。

您必须将 fragment 添加到 Activity 中。只有这样 Fragment 的回调才会被执行。在这些回调(如 onCreate、onCreateView)中,您将创建 EditText、ProgressBar 的实例。

如果您在不将 Fragment 添加到 Activity 的情况下使用这些变量,您将获得 NullPointerException。

我猜您已经向 Activity 添加了一个 fragment 。您不是使用该 Fragment 实例,而是创建一个新实例并在 onPostExecute 中使用该实例。

关于java - 在 Asynctask 的 onPostExecute() 方法中更改 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048549/

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