未显示Toast消息,并忽略了以下代码

时间:2013-07-14 17:15:28

标签: android inner-classes toast android-context

我有以下代码:

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==nullToast.makeText(...).show(),则首先不显示toast消息,然后第二行似乎未执行。 如果我只评论Toast行,则所有内容都按预期运行。

我尝试将其设置为上下文MyActivity.thisgetParent().getApplicationContext()以及getApplicationContext(),但它不起作用。

2 个答案:

答案 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。