0

アプリでProgressDialogを使用していますが、アプリの実行時にエラーが発生しました。

これがコードです

   public class MainActivity extends Activity{


    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

        ProgressDialog mDialog = new ProgressDialog(getApplicationContext());
        mDialog.setMessage("Loading...");
        mDialog.setCancelable(false);
        mDialog.show();

    }
}

更新されたコード:

パブリッククラスMainActivityはActivity{を拡張します

public static ProgressDialog dialog;


public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);



}


 private static abstract class DictionaryOpenHelper extends SQLiteOpenHelper {



     public DictionaryOpenHelper() {
        super(null, null, null, 0);
        // TODO Auto-generated constructor stub
    }



    public void onCreate() {
        // TODO Auto-generated method stub

        ProgressDialog dialog = ProgressDialog.show(DictionaryOpenHelper.this, "", 
                "Loading. Please wait...", true);  

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }


 }

}

そして、ProgressDialogダイアログでエラーを出します= ProgressDialog.show(DictionaryOpenHelper.this、 ""、"読み込み中です。お待​​ちください..."、true); :

ProgressDialog型のメソッドshow(Context、CharSequence、CharSequence、boolean)は、引数(MainActivity.DictionaryOpenHelper、String、String、boolean)には適用できません。

4

6 に答える 6

1

試す

ProgressDialog dialog = ProgressDialog.show(yourActivity.this, "", 
                        "Loading. Please wait...", true);  
于 2013-01-18T06:36:17.813 に答える
1
    Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
01-18 06:26:07.273: E/AndroidRuntime(3853):     at android.view.ViewRootImpl.setView(ViewRootImpl.java:524)

ロードおよびアンロードの進行状況ダイアログは、次のスニペットで試行でき、UIThreadの一部にします/// load

  private ProgressDialog pDialogTh = null;
      private void showLoading() {
        runOnUiThread(new Runnable() {
            public void run() {
                // if(pDialog==null)
                pDialogTh = ProgressDialog.show(YourActivity.this, "", "Loading...",
                        true, true);
                pDialogTh.setCancelable(false);
                if (!pDialogTh.isShowing()) {
                    pDialogTh.show();
                }
            }
        });
    }

///////アンロード

private void hideLoading() {
    runOnUiThread(new Runnable() {
        public void run() {
            if (pDialogTh.isShowing()) {
                pDialogTh.cancel();
            }
        }
    });
}
于 2013-01-18T06:40:45.017 に答える
0

試す :

public class MainActivity extends Activity{


public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

    ProgressDialog mDialog = new ProgressDialog(MainActivity.this);
    mDialog.setMessage("Loading...");
    mDialog.setCancelable(false);
    mDialog.show();

}

}

于 2013-01-18T06:41:22.483 に答える
0

こんにちはgetApplicationContext()をアクティビティ名に変更します

  ProgressDialog mDialog = new ProgressDialog(MainActivity.this);
于 2013-01-18T06:42:22.467 に答える
0

タブを使用していて、進行状況ダイアログが必要な場合は...

public class MainActivity extends Activity{


public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

    ProgressDialog mDialog = new ProgressDialog(getParent());
    mDialog.setMessage("Loading...");
    mDialog.setCancelable(false);
    mDialog.show();

}
}

それ以外の場合はこれを書いてください...

public class MainActivity extends Activity{


public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

    ProgressDialog mDialog = new ProgressDialog(MainActivity,this);
    mDialog.setMessage("Loading...");
    mDialog.setCancelable(false);
    mDialog.show();

}
}
于 2013-01-18T06:52:22.663 に答える
0

私はこれを非同期タスクで使用しています。これは魅力のように機能します。

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            dialog = new ProgressDialog(ActivityAddTicket.this);
            dialog.setTitle(R.string.processing);
            dialog.setMessage(getResources().getString(R.string.loading));
            dialog.show();
        };
于 2014-04-15T06:32:02.027 に答える