これは私の最初のAndroidアプリであると説明することから始めましょう。だから私はまだすべてのコンセプトを完全に把握していません。私は、この問題が知識の不足に関連するものと期待していますが、今回はこの問題の解決策をgoogleにすることはできません。Android - 進行状況のダイアログをスレッドで埋めて作成する
私は、このコードスニペットを使用して、リモートのMysqlデータベースからいくつかのデータを取得し、ListViewを埋めています。これはうまく動作します。これはいくつかの時間がかかることがありますので、
// fetch family and determine length of the arrays
Familielid[] familie = Mysql.getFamilie();
int len = familie.length;
namen = new String[len]; // groups
lijsten = new String[len][]; // children
// loop through the family and fill names and lists
for (int i=0; i<len; i++)
{
namen[i] = familie[i].getNaam();
Lijst lijst = new Lijst(Mysql.getLijst(familie[i].getId()));
lijsten[i] = lijst.getOmschrijvingen();
}
は今、私がロードされている各「Familielid」(=家族)のために満たされますプログレスバーを表示したいです。 (私は主にこれを行う方法を見つけるためにこの方法をしたい) しかし、このコードは、アプリケーションエラーを投げている。 :(
// show progress bar while loading
ProgressDialog progressDialog = new ProgressDialog(VerlanglijstenActivity.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Lijstjes ophalen...");
progressDialog.setCancelable(false);
progressDialog.show();
// load lijstjes with progress bar
Thread loadLijstjes = new Thread(new Runnable() {
public void run() {
// fetch family and determine length of the arrays
Familielid[] familie = Mysql.getFamilie();
int len = familie.length;
namen = new String[len]; // groups
lijsten = new String[len][]; // children
// loop through the family and fill names and lists
for (int i=0; i<len; i++)
{
namen[i] = familie[i].getNaam();
Lijst lijst = new Lijst(Mysql.getLijst(familie[i].getId()));
lijsten[i] = lijst.getOmschrijvingen();
// show progress
progressDialog.incrementProgressBy((int) Math.floor(100/len));
}
progressDialog.setProgress(100); // just make sure it's 100% when we're done
progressDialog.dismiss() ; // close the progress bar
}
});
loadLijstjes.start();
私が間違ってやっているのか、それともそれは完全に異なって何をすべきか任意のアイデア?
UIスレッド内のオブジェクトに対する操作を別のスレッドから呼び出すことはできません。 – waqaslam