如何在Android中显示Toast?

我有一个滑块,可以拉起来,然后显示一张地图。 我可以上下移动滑块来隐藏或显示地图。 当地图在前面时,我可以在该地图上处理触摸事件。 每当我触摸,一个AsyncTask被启动,它下载一些数据,并使一个Toast显示数据。 尽pipe我在触摸事件上启动任务,但是没有显示出烤面包,直到我closures滑块。 当滑块closures,地图不再显示时, 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(); 

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

为了在应用程序中显示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(); 

使用baseadapter扩展活动使用了这个

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

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

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

句法

 Toast.makeText(context, text, duration); 

参数值

上下文

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

getBaseContext() – 如果要从应用程序中的其他上下文访问上下文,则可以访问该上下文。

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

文本

text – 返回“STRING”,如果不是string,你可以使用types转换。

  (string)num // type caste 

持续时间

Toast.LENGTH_SHORT – 吐司延迟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(); 

你可以自定义你的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(); 

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

使用内置的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(); 

我已经尝试了几次敬酒,对于那些敬酒给他们错误尝试的人

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

在Android上敬酒

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

要么

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

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

我在这里碰到了答案,被一个事实所吸引,这个事实似乎有人在瞎猜,相信活动环境是必需的。 不是这种情况。 但是,Toast是从主事件或UI线程发布的要求。 所以,让它在一个活动环境之外工作是有点棘手的。 这里是一个可以在系统服务中工作的例子,或者是任何最终从Contextinheritance的潜在类。

 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(getActivity(), "this is my Toast message!!! =)", Toast.LENGTH_LONG).show(); 

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

Toast toast = new Toast(getApplicationContext());

 toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.show(); 
  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** 
 Toast.makeText(app.getBaseContext(),String)data.result,Toast.LENGTH_SHORT).show(); 

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

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

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

最简单的方法! (要显示在您的主要活动中,请replace其他活动的第一个参数)

 Button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show(); } }