0
try {
    answerField.setText("Unscrambling...This may take a minute");
    BufferedInputStream(getAssets().open("wordlist.txt"));
    BufferedInputStream[] textfile = new BufferedInputStream[28];
    for(int i = 0; i<28; i++){
        textfile[i] = new BufferedInputStream(getAssets().open(i+1+".txt"));
        }
    answerField.setText(Unscramble.go(tField.getText()+"", textfile));

私の問題は、 answerField.setText("Unscrambler...This may take a minutes"); という行にあります。

コードがそのままの場合、この行は何もしませんが、コード answerField.setText(Unscramble.go(tField.getText()+"", textfile)); の最後の行を取り除くと、それは機能し、TextViewは「解読中...これには1分かかる場合があります」と表示されます

目標は、プログラムがスクランブル解除を完了するまでそのメッセージを表示することです。その後、結果が得られます。

私が何をしているのか、なぜこれが起こっているのか見当がつかないので、どんな助けも本当に大歓迎です.

4

1 に答える 1

2

問題は、最初の呼び出しと 2 番目の呼び出しの間で UI が更新されないことsetTextです。@AVDが述べたように、1つの解決策は、を使用することToastです。

推奨されると私が信じている他の解決策は、を使用することAsyncTaskです。ここでの考え方は、 でテキストを「解読」メッセージに設定onPreExecuteし、次に でメイン タスクを実行しdoInBackground、最後に でテキストをUnscramble.*文字列に設定することonPostExecuteです。

上で提供したドキュメント リンクには優れたAsyncTaskコードがあり、操作してほぼすべてを処理できます。

于 2012-07-10T03:19:43.503 に答える