0

私は AndEngine を使用してゲームに取り組んでおり、Facebook の友達のリストをユーザーに表示する必要があります。のカスタムAdatperを作成しましListViewた。ロードが終了すると、すべてがうまく機能します。ロード部分自体に問題があります。

ListViewカスタム ダイアログ内にあるため、このダイアログ内で を実行しAsyncTaskて、友人の情報を取得し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();
        }
    });
}
4

2 に答える 2

2

別のダイアログからダイアログを開くことは、特にそれらの 1 つが進行状況ダイアログである場合 (画面を回転させてみてください..) は、最良のアイデアではありません。

より良いアプローチを提案します:

フレンド ダイアログには、ListView と ProgressBar の 2 つのビューがあります。データをロードすると ListView は非表示になり、その時点で ProgressBar が表示されます。データの読み込みが完了したら、これら 2 つのビューの間で表示を切り替えるだけです。

これらのビュー間の移行をよりスムーズにするために、ViewAnimatorを使用できます。これは、可視性モードを処理し、移行に効果 (フェード、スライドなど) を追加することもできます。使い方はとても簡単で、オンラインにはたくさんの例があります。

頑張ってください!

于 2012-11-06T01:02:40.927 に答える
0

スタイル(マニフェスト内)を設定して、アクティビティをダイアログとして使用します。そのアクティビティ内で進行状況ダイアログを使用できるよりも

于 2012-11-06T06:17:32.840 に答える