我有以下代码:
protected MyCallback getMyCallbackHandler() {
return new MyCallback() {
@Override
public void onReady() {
// DO STUFF
if (stuff!= null) {
mThread = new MyThread(stuff,MyActivity.this);
mThread.execute(mSensors.getLocation());
}
else {
Toast.makeText(MyActivity.this, "No target detected! Try again later.", Toast.LENGTH_LONG).show();
mSensors.registerCallback(null);
}
runOnUiThread(new Runnable(){
@Override
public void run() {
comp.setVisibility(View.VISIBLE);
}
});
}
};
}
问题在于,如果调用stuff==null
时Toast.makeText(...).show()
,则首先不显示toast消息,然后第二行似乎未执行。
如果我只评论Toast
行,则所有内容都按预期运行。
我尝试将其设置为上下文MyActivity.this
,getParent().getApplicationContext()
以及getApplicationContext()
,但它不起作用。
答案 0 :(得分:1)
你不能在这里使用Toast
你应该使用Log.d()
,如果你真的想调试应用程序开始玩Logcat!
如果你想在这个传递上下文中使用Toast到getMyCallbackHandler(Context c)
并在你的Toast中使用
else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(c, "No target detected! Try again later.",
Toast.LENGTH_LONG).show();
}
});
mSensors.registerCallback(null);
}
答案 1 :(得分:0)
我认为你必须在主UI线程上调用Toast。