478

我有一个可以拉起的滑块,然后它会显示一张地图。我可以上下移动滑块来隐藏或显示地图。当地图在前面时,我可以处理该地图上的触摸事件。每次触摸时,AsyncTask都会启动 a,它会下载一些数据并生成Toast显示数据的 a。虽然我在触摸事件上启动任务,但没有显示 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();

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

4

21 回答 21

886

为了在您的应用程序中显示Toast,请尝试以下操作:

Toast.makeText(getActivity(), (String)data.result, 
   Toast.LENGTH_LONG).show();

另一个例子:

Toast.makeText(getActivity(), "This is my Toast message!",
   Toast.LENGTH_LONG).show();

我们可以为持续时间定义两个常量:

int LENGTH_LONG 长时间显示视图或文本通知。

int LENGTH_SHORT 在短时间内显示视图或文本通知。

定制你的吐司

LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();
于 2010-08-17T16:06:57.110 回答
86

baseadapter使用此扩展活动

Toast.makeText(getActivity(), 
    "Your Message", Toast.LENGTH_LONG).show();

或者如果您正在使用活动或mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
于 2013-12-12T11:51:21.917 回答
48

句法

Toast.makeText(context, text, duration);

参数值

语境

getApplicationContext()- 返回应用程序中运行的所有活动的上下文。

getBaseContext()- 如果您想从应用程序中的另一个上下文访问上下文,您可以访问。

getContext()- 仅返回当前正在运行的活动的上下文视图。

文本

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

 (string)num   // type caste

期间

Toast.LENGTH_SHORT- Toast 延迟 2000 毫秒预定义

Toast.LENGTH_LONG - Toast 延迟 3500 毫秒预定义

milisecond - Toast 延迟用户定义的毫秒数(例如 4000)


Example.1

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

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
于 2014-03-10T08:55:50.170 回答
28

在 Android 中吐司

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();

或者

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();

( LENGTH_SHORT 和 LENGTH_LONG 充当布尔标志 - 这意味着您不能将 toast 计时器发送到毫秒,但您需要使用这两个选项中的任何一个)

于 2013-04-09T08:15:43.683 回答
21

您可以自定义您的 tost:

LayoutInflater mInflater=LayoutInflater.from(this);

View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();

或一般方式:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
于 2012-11-22T13:50:39.203 回答
15

我已经尝试了几个吐司,对于那些吐司给他们错误的人尝试

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
于 2016-03-31T17:45:49.783 回答
14

有两种方法可以做到这一点。

使用内置的 Toast 消息

//Toast shown for  short period of time 
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();

//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();

或通过提供自定义布局文件进行自定义

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
于 2014-10-19T16:44:45.483 回答
9

我在这里遇到了答案,并被似乎有人在四处闲逛,认为需要 Activity 上下文这一事实所吸引。不是这种情况。但是,需要从主事件或 UI 线程发布 Toast。所以,让它在活动上下文之外工作有点棘手。这是一个可以在系统服务或任何最终继承自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.

于 2015-12-10T21:36:39.240 回答
9
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

而不是使用“app.getBaseContext()”。

您可以尝试使用“ getApplicationContext() ”或“ getContext() ”。

如果您的代码处于活动状态,那么您应该使用“Activty.this”的“this”。
如果您的代码在片段中,那么您应该使用“getActivity()”

于 2016-11-04T09:34:00.867 回答
7

如果是碎片,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();
于 2014-12-16T08:25:42.687 回答
6

要显示 Toast,请使用以下代码:

Toast toast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
于 2013-06-20T10:38:33.957 回答
6

简单的方法

toast("Your Message")

或者

toast(R.string.some_message)

只需在您的BaseActivity. 或者BaseActivity如果您还没有使用,请创建新的。

public class BaseActivity extends AppCompatActivity {
    public void toast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    public void toast(@StringRes int msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }
}

并将您的所有活动扩展BaseActivity.

public class MainActivity extends BaseActivity
于 2018-11-12T11:39:31.430 回答
5
 Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
 toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
 toast.setDuration(10000);//you can even use milliseconds to display toast
 toast.show();**//showing the toast is important**
于 2014-12-17T13:07:59.113 回答
5

在此处输入图像描述

必读:Android Toast 示例

句法

Toast.makeText(context, text, duration);

您可以使用getApplicationContext()getActivity()MainActivity.this(如果活动名称是 MainActivity)

Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();

或者

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();
于 2019-03-13T16:32:57.980 回答
5

内部片段 (onCreateView)

Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();

内部类(onCreate)

Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();

于 2020-04-12T12:27:34.653 回答
4

入门方式

Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
于 2019-11-30T02:13:41.137 回答
3

最简单的方法!(要显示在您的主要活动中,请将 First Argument 替换为其他活动)

Button.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
    }
}
于 2017-02-19T09:06:27.977 回答
3

这是另一个:

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

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

& strings.xml:

<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>

于 2019-02-23T15:09:59.003 回答
2

这对我有用:

Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();
于 2018-08-10T22:09:10.813 回答
2

显示服务吐司

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方法放在您的应用程序类中,并从任何地方显示吐司。

于 2018-08-15T16:15:17.877 回答
2

如果你想在你的活动中写一个简单的祝酒词: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1.在Toast中显示TextView:---

TextView tv = new TextView(this); tv.setText("Hello!"); tv.setTextSize(30); tv.setTextColor(Color.RED); tv.setBackgroundColor(Color.YELLOW);

2.将图像显示为吐司:--

ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.blonde); Toast t = new Toast(this); t.setView(iv); t.setDuration(Toast.LENGTH_LONG); t.show();

3.将布局显示为吐司:--

LayoutInflater li = getLayoutInflater(); View view = li.inflate(R.layout.my_toast_layout,null,false); Toast t = new Toast(this); t.setView(view); t.setDuration(Toast.LENGTH_LONG); t.show();

** 如果你想在你的 Async 中写 toast,那么: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

于 2018-11-01T07:26:41.677 回答