スレッドからトーストメッセージを表示するにはどうすればよいですか?
110349 次
12 に答える
256
スレッドからActivity
のメソッドを呼び出すことで実行できます。runOnUiThread
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();
}
});
于 2010-06-28T17:37:15.537 に答える
67
どこからでも呼び出すことができるメソッドを自分のアクティビティに含めるのshowToast
が好きです...
public void showToast(final String toast)
{
runOnUiThread(() -> Toast.makeText(MyActivity.this, toast, Toast.LENGTH_SHORT).show());
}
MyActivity
次に、このようなスレッド内から最も頻繁に呼び出します...
showToast(getString(R.string.MyMessage));
于 2012-10-15T14:06:32.153 に答える
32
これは他の回答と似ていますが、新しい利用可能な API 用に更新され、よりクリーンになりました。また、アクティビティ コンテキストにいるとは限りません。
public class MyService extends AnyContextSubclass {
public void postToastMessage(final String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
}
});
}
}
于 2015-12-10T23:12:05.180 に答える
10
これまたはこれのように、Runnable
を示す が付いていますToast
。すなわち、
Activity activity = // reference to an Activity
// or
View view = // reference to a View
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
showToast(activity);
}
});
// or
view.post(new Runnable() {
@Override
public void run() {
showToast(view.getContext());
}
});
private void showToast(Context ctx) {
Toast.makeText(ctx, "Hi!", Toast.LENGTH_SHORT).show();
}
于 2010-06-28T17:35:42.660 に答える
3
Looper
メッセージの送信に使用できToast
ます。詳細については、このリンクを参照してください。
public void showToastInThread(final Context context,final String str){
Looper.prepare();
MessageQueue queue = Looper.myQueue();
queue.addIdleHandler(new IdleHandler() {
int mReqCount = 0;
@Override
public boolean queueIdle() {
if (++mReqCount == 2) {
Looper.myLooper().quit();
return false;
} else
return true;
}
});
Toast.makeText(context, str,Toast.LENGTH_LONG).show();
Looper.loop();
}
そしてそれはあなたのスレッドで呼び出されます。コンテキストは、トーストを表示する必要があるActivity.getContext()
ことから得られている可能性があります。Activity
于 2014-05-09T05:43:03.037 に答える