java - 在 PreferenceActivity 中显示 ProgressDialog

标签 java android progressdialog preferenceactivity

当我尝试在 onPreferenceChange 监听器中显示 ProgressDialog(简单的微调器类型)时,我遇到了一个非常有趣的问题。

public class SettingsActivity extends PreferenceActivity {
  private ProgressDialog dialog;

  public void onCreate(Bundle savedInstanceState) {
    ListPreference pref= (ListPreference) findPreference("myPreference");  
    pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
        dialog = ProgressDialog.show(SettingsActivity.this, "", "Doing stuff...", true);
        SystemClock.sleep(2000);
     }
    return true;
  }
}

ProgressDialog 出现,但直到方法(在本例中为 sleep)完成。我做错了什么?

最佳答案

您在主 UI 线程上 hibernate ,这会阻止操作系统处理应用程序的事件。这将阻止您的应用重绘,并且正如您发现的那样,可以阻止新窗口实际出现。

不要 sleep ,试试这个:

final ProgressDialog dialog = ProgressDialog.show(
    SettingsActivity.this, "", "Doing stuff...", true);
new Handler().postDelayed(new Runnable() {
    public void run() {
      dialog.hide();
    }
  }, 2000);

关于java - 在 PreferenceActivity 中显示 ProgressDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380322/

相关文章:

java - 管道中的中间步骤

Java 双链表前一个指针未正确分配

android - 如何使用 textureregion 在 libgdx 中设置图像

java - Android:如何在另一个包的 Activity 中显示异步任务的进度对话框?

java - "Undefined reference: .. ConcurrentHashMap.keySet()"在 Java 8 中构建时

java - 如何从java Restful服务器向gcm服务器发送消息

android - 跨平台随机再现性

android - 获取当前日期和时间

android - 如何覆盖进度条进度消息,即 61/100 到自定义消息,因为 100 剩余 0

安卓 : Text is not Showing in the TextView after applying Async Progress Dialog