如何在Android中展示吐司?
-
29-09-2019 - |
题
我有一个可以向上拉的滑块,然后显示一个地图。我可以上下移动滑块以隐藏或显示地图。当地图在正面时,我可以处理该地图上的触摸事件。每次我触摸, 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();
在新 TestTask(this)
, ,这是对 MapOverlay
而不是 MapActivity
, ,所以这是问题所在。
解决方案
为了显示 吐司 在您的应用程序中,请尝试以下操作:
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
- 返回“字符串”,如果不是字符串,则可以使用类型cast。
(string)num // type caste
期间
Toast.LENGTH_SHORT
- 吐司延迟2000毫秒预定义
Toast.LENGTH_LONG
- 吐司延迟3500毫秒预定义
milisecond
- 吐司延迟用户定义的摩尔环(例如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充当布尔标志 - 这意味着您不能将吐司计时器发送到miliseconds,但是您需要使用这两个选项中的任何一个)
您可以自定义您的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 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();
我在这里遇到了答案,并因似乎有人在四处戳,认为需要活动环境。不是这种情况。但是,这需要从主事件或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(getActivity(), "this is my Toast message!!! =)",
Toast.LENGTH_LONG).show();
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();
而不是使用“ app.getBaseContext()”。
您可以尝试使用”getApplicationContext()“ 或者 ”getContext()".
如果您的代码在活动中,则应使用“ Activty.This”的“此”。
如果您的代码处于碎片状态,则应该选择“ getActivity()”
用于显示吐司使用以下代码:
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
最简单的方式! (要在您的主要活动中显示,请替换其他活动的第一个参数)
Button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
}
}
这对我有用:
Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();
如果您想在活动中写一个简单的吐司:Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();
1.在吐司中展示文本视图:---
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();
**如果您想在异步中写吐司,则:private Activity activity;
private android.content.Context context;
this.activity = activity;
this.context = context;
Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).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
应用程序类中的方法,并在任何地方显示吐司。
这是另一个:
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>
句法
Toast.makeText(context, text, duration);
您可以使用 getApplicationContext() 或者 getActivity() 或者 Main Activity(如果活动名称是主进)
Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();
或者
Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();