[英]How to display Toast in Android?
我有一个可以拉起的 slider 然后它显示一个 map。我可以上下移动 slider 来隐藏或显示 map。当 map 在前面时,我可以处理触摸事件 88247786.3218 ,一个AsyncTask
被启动,它下载一些数据并制作一个显示数据的Toast
。 虽然我在触摸事件上启动任务,但没有显示 toast,直到我关闭 slider。当 slider 关闭并且 map 不再显示时, 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
的引用,所以这就是问题所在。
为了在您的应用程序中显示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()
- 如果您想从您可以访问的应用程序内的另一个上下文访问 Context。
getContext()
- 仅返回当前正在运行的活动的上下文视图。
text
- 返回 "STRING" ,如果不是字符串,您可以使用类型转换。
(string)num // type caste
Toast.LENGTH_SHORT
- 预定义的 Toast 延迟 2000 毫秒
Toast.LENGTH_LONG
- Toast 延迟 3500 ms 预定义
milisecond
- Toast 延迟用户定义的毫秒(例如 4000)
示例.1
Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();
例 2
Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
在 Android 中敬酒
Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();
或者
Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();
( LENGTH_SHORT 和 LENGTH_LONG 充当布尔标志 - 这意味着您不能将吐司计时器发送到毫秒,但您需要使用这两个选项中的任何一个)
您可以自定义您的 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.makeText(getApplicationContext(), "google", 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();
我在这里找到了答案,并被这样一个事实所吸引:似乎有人在四处闲逛,认为需要 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
。
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();
而不是使用“app.getBaseContext()”。
您可以尝试使用“ getApplicationContext() ”或“ getContext() ”。
如果您的代码处于活动状态,那么您应该使用“Activty.this”中的“this”。
如果您的代码在片段中,那么您应该选择“getActivity()”
如果是碎片,
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("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
句法
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();
最简单的方法! (要显示在您的主要活动中,请将第一个参数替换为其他活动)
Button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
}
}
入门方式
Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
这对我有用:
Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).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
在哪里:
Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
& strings.xml
:
<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>
片段内部(onCreateView)
Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();
内部类 (onCreate)
Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();
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
方法放在您的 Application 类中,并从任何地方显示 toast。
如果你想在你的活动中写一个简单的 toast: 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();
分机 function 和一些 kotlin 糖
fun Context.showToast(string: String){
Toast.makeText(
this, string,
Toast.LENGTH_SHORT
).show()
}
用法:
来自活动: showToast("toast)
来自片段: requiredContext().showToast("toast)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.