4

少し奇妙な問題があります。アクティビティが開始されると、いくつかのアイテムが次のように読み込まれていることを示すダイアログが表示されます。

Dialog dialog;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);        
    setContentView(R.layout.topic_edit);

    dialog = new Dialog (this);

    dialog.setContentView(R.layout.please_wait);
    dialog.setTitle("Loading The Comment.");

    TextView text = (TextView) dialog.findViewById(R.id.please_wait_text);
    text.setText("Please wait while the comment loads...");
    dialog.show();

クラス宣言の直前に Dialog ダイアログを宣言すると、それを閉じようとするとdialog.dismiss();閉じられません。

ここにplease_wait.xmlがあります

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<TextView
    android:id="@+id/please_wait_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</RelativeLayout>

ダイアログが閉じない理由を誰かが知っていますかdialog.dismiss()...呼び出しが戻った後、非同期呼び出しで却下を試みます。しかし、私はチェックし、行dialog.dismiss()が実行されましたが、何らかの理由でダイアログを閉じません。

これは、ダイアログを閉じようとする方法です。

@Override
protected void onPostExecute(String result) 
{
    dialog.dismiss();
} 
4

2 に答える 2

14

dialog.dismiss を実行するときは、作成したダイアログを指していることを確認してください。クラス変数としてダイアログがあり、解雇されるまでに別のダイアログが割り当てられる可能性が高くなります。私はこれを持っていて、却下時のダイアログ変数が実際のダイアログを指していないことがわかりました。

ブレークポイントを置き、作成/実行時のダイアログ変数がまだ同じかどうかを確認すると、おそらく役立つでしょう

于 2012-09-14T14:30:10.663 に答える
0

試す

Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);

ドキュメントによると、ダイアログを宣言する正しい方法である必要があります。

于 2012-09-14T14:26:03.613 に答える