我正在尝试执行两个方法,我已经在AsyncTask *之外实现了 * ,进入 doInBackground( )的AsyncTask。我通过一个示例复制了AsyncTask代码,该示例正在加载一些文件。
不,我已经通过调用方法替换了该代码。一种方法是更改首选项,按钮背景图像和启动音频,另一种方法是加载数据库。我希望android执行这些方法,在此过程中让progressBar显示进度。但progressBar不是问题所在。
现在的问题是,方法oeffne Datenbank()和soundEinstellung()setzen未被执行,它们在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();
}
}
});
}
}