java - Android ProgressDialog 位于另一个对话框中

标签 java android dialog progressdialog

我正在使用 AndEngine 开发一款游戏,我需要向用户显示他的 Facebook 好友列表。 我已经为 ListView 创建了自定义的 Adatper ,加载完成后一切正常。 我的加载部分本身有问题。

ListView 位于自定义对话框内,因此在该对话框内,我运行一个 AsyncTask 来获取 friend 的信息,在该 AsyncTask 我有一个 ProgressDialog。问题是,ProgressDialog 显示在包含待列表的对话框后面(加载时,只是标题)。 我可以看到 ProgressDialog 在该对话框后面“偷看”。 有什么想法吗?

这是一些代码:

FriendsDialog.java

private ProgressDialog dialog;

//Constructor of the AsyncTask
public FriendsLoader(Context context) {
    dialog = new ProgressDialog(context);
    dialog.setMessage("Please wait..\nLoading Friends List.");
}

@Override
protected void onPreExecute() {
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    dialog.setView(inflater.inflate(R.layout.loading, null));
    dialog.setMessage("Please wait..\nLoading friends.");
    dialog.show();
}

@Override
protected void onPostExecute(ArrayList<HashMap<String, Object>> data) {
    if (dialog.isShowing()) {
        dialog.dismiss();
    }
    MyAdapter myAdapter = new MyAdapter(context, data);
    listView = (ListView) findViewById(R.id.list);
    listView.setAdapter(myAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
            String id = (String) listView.getItemAtPosition(myItemInt);
            listener.onUserSelected(id);
            dismiss();
        }
    });
}

最佳答案

从另一个对话框打开一个对话框并不是最好的主意,特别是如果其中一个对话框是进度对话框(尝试旋转屏幕..)。

我建议一个更好的方法:

好友对话框将有 2 个 View :ListView 和 ProgressBar。 当您加载数据时,ListView 将不可见,而 ProgressBar 此时将可见。当您完成加载数据后,只需在这两个 View 之间切换可见性即可。

为了在这些 View 之间实现更平滑的过渡,您可以使用 ViewAnimator ,它负责可见性模式,甚至允许您为过渡添加效果(例如淡入淡出、幻灯片等)。使用起来非常简单,网上有很多示例。

祝你好运!

关于java - Android ProgressDialog 位于另一个对话框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214340/

相关文章:

java - 如何使用数据库中的属性重新加载配置bean

android - 是否可以在 android 中创建这种自定义 View ?

dialog - 带有自定义图标的applescript显示对话框

c# - MessageBox 不推荐在 MVVM 应用中使用?

ios - 我无法在 iOS 移动设备上使用 Phonegap 打开弹出对话框

Java 集合泛型 <?扩展 Employee> 抛出异常

java - 如何配置 quartz 调度程序占用数据库中存储的作业并在服务器重启时执行?

java - hibernate中的 session 和 session 工厂

android - 如何在单击时将最喜欢的星形图标设置为ON,在android中再次单击时将其设置为OFF

java - 如何推迟android编程方法中的指令