【问题标题】:Progress Dialog in asyncTask OnPreExecute method AndroidasyncTask OnPreExecute 方法 Android 中的进度对话框
【发布时间】:2014-07-08 17:12:38
【问题描述】:

我有MainActivity.java Activity 类,它在应用程序启动时加载。我在名为 ServerOperation.java 的单独文件中使用 asyncTask 方法。我需要在 asyncTask 的 onPreExecute 方法中显示进度条。我正在使用以下代码,但它不工作并且应用程序崩溃:

public class ServerOperation extends AsyncTask<Void, Void, ArrayList<Job>> {
ProgressDialog progressDialog;

@Override
protected void onPreExecute() {
    super.onPreExecute();
    MainActivity myActivity = new MainActivity();
    progressDialog = ProgressDialog.show(myActivity.getApplicationContext(),"PLEASE WAIT","LOADING JOBS...", true);
}
}

我应该如何让 progressDialog 在主要活动上工作?

谢谢。

【问题讨论】:

  • MainActivity 是 Activity 类(扩展 Activity)吗?
  • 请发布崩溃,即 logcat。
  • 是 MainActivity 是活动类。

标签: android android-activity android-asynctask progressdialog


【解决方案1】:

您应该永远不要创建 Acitvity 类的实例。它不是一个普通的 java 类。

你可以将Activity上下文传递给Asynctask的构造函数

调用 Aysnctask 为

 new ServerOperation(MainActivity.this).execute(params);

在 MainActivity 中

然后

 Context mContext;
 public ServerOperation (Context context)
 {
       mContext =context;

 }

然后

  progressDialog = ProgressDialog.show(mContext,"PLEASE WAIT","LOADING JOBS...", true);

【讨论】:

  • @NidaSulheri 欢迎您。只要记住不要自己实例化 Activity 类。它在清单中声明并具有生命周期
  • 您将活动作为参数发送,但然后将其分配给上下文如何?并且没有 super() 和构造函数的覆盖,proexecutepostexecute?
  • @Clara_57S 活动从上下文扩展。您有将上下文作为参数的构造函数,不需要超级grepcode.com/file/repo1.maven.org/maven2/org.robolectric/…。你需要在 onPreExecute 和 onPostExecute 中调用 super
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多