私の活動の 1 つで、私は を使用してAsyncTask
います。ではdoInBackground()
、さまざまなメソッドを呼び出しています。これらのメソッドの 1 つで例外が発生しているため、catch ブロックでトーストにエラーを表示したいと考えています。を使用できることはわかっていますLog
が、それでも私は Toast の方が好きです。では、doInBackground() の AsyncTask で Toast を使用するにはどうすればよいでしょうか?
質問する
24376 次
9 に答える
17
doInBackgroundから戻る
protected String doInBackground(String... params){
//some code
try{
//some code
}catch(Exception e){
return "Exception Caught";
}
return someValidResult;
}
protected void onPostExecute(String result){
if(result.equalsIgnoreCase("Exception Caught")){
//Display Toast
}else{
// // whatever you wana do with valid result
}
}
于 2012-12-09T18:41:45.820 に答える
13
トーストをラップすることもできますがrunOnUIThread()
、これは最善の解決策ではありません。
エラーが発生したときに catch ブロックでブール値フラグを設定し、フラグが のときはいつでも、、、または UI アクセスを使用するその他のメソッドのいずれかでonProgressUpdate()
適切なトーストを表示する必要があります。onPostExecute()
true
于 2012-12-09T18:33:10.980 に答える
6
doInBackground()
メソッドでトーストを表示する必要がある場所に次のコードを記述します
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
- ところで: を使用している場合は、アクティビティを介して
Fragments
呼び出す必要があります。runOnUiThread(...)
getActivity().runOnUiThread(...)
于 2013-11-20T13:37:40.240 に答える
3
ハンドラー オブジェクトを作成し、それを使用してすべての Toast メッセージを実行します。
@Override
protected Void doInBackground(Void... params) {
Handler handler=new handler();
handler= new Handler(context.getMainLooper());
handler.post( new Runnable(){
public void run(){
Toast.makeText(context, "Created a server socket",Toast.LENGTH_LONG).show();
}
});
}
于 2014-06-03T08:29:59.843 に答える
3
onPreExecute()
のようなUI スレッドonProgressUpdate()
にアクセスできるメソッドで表示できます。onPostExecute()
于 2012-12-09T18:38:00.090 に答える
1
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
doInBackground() メソッドでトーストを表示するために完全に正常に動作しています
于 2014-02-12T10:27:31.417 に答える
0
このコードを試してください
void showError(final String err) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(downloadprogress.this, err + "error in download", Toast.LENGTH_LONG)
.show();
}
});
}
于 2015-08-05T06:43:35.897 に答える