当我尝试在 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/