我有一个滑块,可以拉上来,然后它会显示一个地图。我可以上下移动滑块来隐藏或显示地图。当地图在前面时,我可以处理地图上的触摸事件。每次我触摸,一个AsyncTask就会被激活,它会下载一些数据并生成一个显示数据的Toast。虽然我在触摸事件上启动任务,但直到我关闭滑块时,才会显示toast。当滑块关闭,地图不再显示时,吐司就会出现。

什么好主意吗?

我们开始任务吧

编辑:

public boolean onTouchEvent(MotionEvent event, MapView mapView){ 
    if (event.getAction() == 1) {
        new TestTask(this).execute();
        return true;            
    }else{
        return false;
    }
 }

并在onPostExecute中敬酒

Toast.makeText(app.getBaseContext(),(String)data.result, 
                Toast.LENGTH_SHORT).show();

在new TestTask(this)中,这是对MapOverlay的引用,而不是对MapActivity的引用,所以这就是问题所在。


当前回答

我在这里偶然看到了这些答案,并被这样一个事实所吸引,即似乎有人四处打听,认为需要一个Activity上下文。事实并非如此。但是,Toast必须从主事件或UI线程中发布。让这个在活动上下文之外工作有点棘手。下面是一个在系统服务或任何最终继承自Context的潜在类中工作的示例。

public class MyService extends AccessibilityService {

    public void postToastMessage(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());

        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
}

请注意,我们不需要访问Activity的实例来实现这一点。请不要再暗示这是事实!如果Activity是必需的,方法签名就不会调用Context。

其他回答

我已经试过好几种吐司了,那些吐司给他们错误的尝试

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();

语法

Toast.makeText(context, text, duration);

参数值

上下文

getApplicationContext() -返回应用程序中运行的所有活动的上下文。 getBaseContext() -如果你想从应用程序中的另一个上下文访问Context,你可以访问。 getContext() -仅返回当前正在运行的活动的上下文视图。

text

text -返回"STRING",如果不是字符串,可以使用类型转换。

 (string)num   // type caste

持续时间

吐司。LENGTH_SHORT -吐司延迟2000毫秒预定义的 吐司。LENGTH_LONG -预定义的烤面包延迟3500毫秒 毫秒-吐司延迟用户定义的毫秒(例如。4000)


Example.1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();

这是另一个:

refreshBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
            }
        });

吐司在哪里:

Toast.makeText (getBaseContext (), getText (R.string.refresh_btn_pushed) Toast.LENGTH_LONG),告诉();

& strings.xml:

<string name=" refresh_btn_pushing ">"Refresh was Clicked…"字符串> < /

祝酒词

public class ServiceA extends Service {
    //....
    public void showToast(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();
            }
        });
    }
    //....
}

你也可以把showToast方法放在你的应用程序类中,并从任何地方显示toast。

如果你想在你的活动中写一段简单的祝酒词: Toast.makeText (getApplicationContext(),“你好”,Toast.LENGTH_SHORT),告诉();

1.在Toast中显示TextView:——

TextView tv =新的TextView(这); tv.setText(“你好!”); tv.setTextSize (30); tv.setTextColor (Color.RED); tv.setBackgroundColor (Color.YELLOW);

2.显示图像为吐司:-

ImageView iv =新的ImageView(this); iv.setImageResource (R.drawable.blonde); 吐司=新的吐司(这个); t.setView (iv); t.setDuration (Toast.LENGTH_LONG); t.show ();

3.显示布局为吐司:——

LayoutInflater li = getLayoutInflater(); View View = li. expand (r.b ayout.my_toast_layout,null,false); 吐司=新的吐司(这个); t.setView(查看); t.setDuration (Toast.LENGTH_LONG); t.show ();

**如果你想在Async中写吐司,那么: 私人活动活动; private android.content.Context 这一点。活动=活动; 这一点。上下文=上下文; 吐司。makeText(context, "Hello", Toast.LENGTH_SHORT).show();