0

我有以下代码:

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==nullwhen Toast.makeText(...).show(),首先不会出现 toast 消息,其次似乎没有执行下一行。如果我只评论这一Toast行,一切都会按预期运行。

我试图把它作为 context MyActivity.this,但它getParent().getApplicationContext()getApplicationContext()不起作用。

4

2 回答 2

1

你不能Toast在这里使用你应该使用Log.d(),如果你真的想调试应用程序开始玩 Logcat !

如果你想在这个传递上下文中使用 ToastgetMyCallbackHandler(Context c)

并在你的吐司中使用它

else {

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(c, "No target detected! Try again later.",
                            Toast.LENGTH_LONG).show();
                }

            });
            mSensors.registerCallback(null);
        }
于 2013-07-14T17:17:11.163 回答
0

我认为您必须在主 UI 线程上调用 Toast。

于 2013-07-14T17:19:09.607 回答