AsyncTask中的方法未执行

时间:2011-09-13 12:59:39

标签: android android-asynctask execute

我正在尝试执行两个方法,我已经在AsyncTask 之外实现了,进入了AsyncTask的doInBackground()。我通过一个示例复制了AsyncTask代码,该示例正在加载一些文件。

不,我已经通过调用方法替换了该代码。一种方法是更改​​首选项,按钮背景图像和启动音频,另一种方法是加载数据库。我希望android执行这些方法,在此过程中让progressBar显示进度。但progressBar不是问题所在。

现在的问题是,没有执行oeffne Datenbank()和soundEinstellungSetzen()的方法,这些方法在AsyncTask中调用。我做错了什么?

oeffneDatenbank()打开数据库,soundEinstellungSetzen()启动声音并在首选项中写入内容。如果我在onCreate()中执行它们,这两种方法都有效! (但不在AsyncTask中)

public class Start extends Activity {

private static String TAG = "Async Downloader";
private TextView updateText;
private ProgressBar progressBar;
private TextView titel;
    private Button buttonLosGehts;
private DataBaseHelper myDbHelper;
private ImageView titelbild;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layoutstart);

    titel = (TextView) findViewById(R.id.titel);
    buttonLosGehts = (Button) findViewById(R.id.losGehts);      
    titelbild = (ImageView)findViewById(R.id.app_logo);

    // Button zum Start der App
    titelbild.setVisibility(View.INVISIBLE);

    progressBar = (ProgressBar) findViewById(R.id.progressbar);
    buttonLosGehts.setVisibility(View.INVISIBLE);


    buttonLosGehts.setVisibility(View.VISIBLE);
    new LoadFilesTask().execute("http://www.smartftp.com/get/SFTPMSI.exe");

    buttonLosGehts.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent starteApp = new Intent(Start.this, Hauptmenue.class);
            startActivity(starteApp);
        }
    });

}

public class LoadFilesTask extends AsyncTask<String, Integer, Integer> {

     @Override
     protected Integer doInBackground(String... urls) {
         int count;
          try {  oeffneDatenbank();
                      soundEinstellungSetzen();             
         } catch (Exception e) {}
         return null;
    }

     protected void onProgressUpdate(Integer... progress) {

        updateProgressBar(progress[0]);
     }
     @Override
     protected void onPostExecute(Integer result) {
                     showFinishedToast();
         buttonLosGehts.setVisibility(View.VISIBLE);            
        }
   }    
public void updateProgressBar(Integer progressPercentage) {
    progressBar.setProgress(progressPercentage);
}    

private void showFinishedToast() {
    Context context = getApplicationContext();
    CharSequence text = "All files downloaded successfully!";
    int duration = Toast.LENGTH_LONG;
    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
}



public void oeffneDatenbank() {
    // DataBaseHelper Objekt erstellen, um lokale Datenbank zu erstellen und
    // zu öffnen

    myDbHelper = new DataBaseHelper(this);
    try {
        myDbHelper.createDataBase();
    } catch (IOException ioe) {
        throw new Error("Unable to create database");
    }
    try {
        myDbHelper.openDataBase();
        // Toast, falls Datenbank geöffnet wird
        CharSequence text = "Datenbank geöffnet!";
        int duration = Toast.LENGTH_SHORT;
        final Toast toast = Toast.makeText(this, text, duration);
        toast.show();
    } catch (SQLException sqle) {
        throw sqle;
    }
}



    public void soundEinstellungSetzen() {
    final ToggleButton buttonSoundAnAus = (ToggleButton)findViewById(R.id.soundAnAus);      
    final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.audiotest);

    final SharedPreferences einstellungen = getSharedPreferences(
            getPackageName() +  "_preferences", MODE_PRIVATE);
    boolean soundEinstellung = einstellungen.getBoolean("soundAnAus",false);

    // gespeicherten Wert für Soundeinstellung abfragen und Button entsprechend setzen
    if (soundEinstellung) {
        buttonSoundAnAus.setChecked(true);
        buttonSoundAnAus.setBackgroundDrawable(getResources()
                .getDrawable(R.drawable.backgroundstart2));
        mediaPlayer.start();
    }
    // Button und damit Sound auf an/aus setzen
    buttonSoundAnAus.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Erstellen eines Objektes, mit dem man die
            // Anwendungseinstellungen
            // ändern kann

            final Editor editor = einstellungen.edit();

            // Aktionen bei Click ausführen
            if (buttonSoundAnAus.isChecked()) {

                editor.putBoolean("soundAnAus", true);
                editor.commit();
                buttonSoundAnAus.setBackgroundDrawable(getResources()
                        .getDrawable(R.drawable.backgroundstart2));
                //Toast.makeText(Start.this, "Sounds an", Toast.LENGTH_SHORT)
                        //.show();
            } else {
                editor.putBoolean("soundAnAus", false);
                editor.commit();
                buttonSoundAnAus.setBackgroundDrawable(getResources()
                        .getDrawable(R.drawable.backgroundstart));

                        //.show();
            }
        }
    });
}  

0 个答案:

没有答案