如何在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线程发布的要求。 所以,让它在一个活动环境之外工作是有点棘手的。 这里是一个可以在系统服务中工作的例子,或者是任何最终从Context
inheritance的潜在类。
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(); } }