動作していない2つのAsyncTaskがあります。私が間違っていることの両方に共通する何かがあるに違いありません。
最初のアクティビティの読み込みに時間がかかるため、progressDialog / Barが必要ですが、失敗します。onCreateでAsyncTaskにアクセスします
new HeavyWorker(this).execute();
public class HeavyWorker extends AsyncTask < String , Context , Void > {
private ProgressDialog progressDialog ;
private Context targetCtx ;
public HeavyWorker ( Context context ) {
this.targetCtx = context ;
// this.needToShow = true;
progressDialog = new ProgressDialog ( targetCtx ) ;
progressDialog.setCancelable ( false ) ;
progressDialog.setMessage ( "Retrieving data..." ) ;
progressDialog.setTitle ( "Please wait" ) ;
progressDialog.setIndeterminate ( true ) ;
}
@ Override
protected void onPreExecute ( ) {
progressDialog.show ( ) ;
}
@ Override
protected Void doInBackground ( String ... params ) {
// Do Your WORK here
以下のこれらの行は、通常の
「public void onCreate(Bundle savedInstanceState)」領域にある場合に正常に機能します
Ls = new LoadSettings(CreateAppointment.this);
gs = new GlobalSubs();
TimeZoneList();
この行はスピナーボックスを動的に埋めて機能しなくなるので、コメントアウトしました。
// createTimezone();
ZoneList(Ls.getCountryZone());
この行もスピナーボックスを動的に埋めるので、コメントアウトしました
// createZone();
InitialiseUI();
CreateFileName();
return null ;
}
このエリアに到達することはありませんか?
@ Override
protected void onPostExecute ( Void result ) {
if(progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss ( ) ;
}
}
}
私の2ページ目は、同じスタイルの問題で失敗します。
また、少し異なるコードで設定ページを試してみました。現在修正済み:
//
private class MyClass extends AsyncTask<Void, Void, Void>{
ProgressDialog mProgressDialog;
public MyClass(){
mProgressDialog = new ProgressDialog(Preferences.this);
mProgressDialog.setMessage ("Please Wait While Saving");
mProgressDialog.setTitle("Saving");
//
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog.show(Preferences.this, "Saving", "Please Wait a Sec");
}
@Override
protected Void doInBackground(Void... params)
{
saveSettings();
return null;
}
@Override
protected void onPostExecute(Void unused) {
それが機能する唯一の方法は、私がその行をコメントアウトして別のアクティビティに変更するときです
// mProgressDialog.dismiss();
Toast.makeText(Preferences.this, "Your Settings Where Saved.", Toast.LENGTH_SHORT).show();
gotoMainPage();
}
}
private void gotoMainPage(){
Intent a = new Intent(this, Main_entry.class);
finish();
startActivity(a);
}