如何在Android中显示Toast?

Upv*_*ote 433 android toast android-asynctask android-mapview

我有一个可以拉起来的滑块,然后它会显示一张地图.我可以上下移动滑块来隐藏或显示地图.当地图在前面时,我可以处理该地图上的触摸事件.每当我触摸时,a AsyncTask会被启动,它会下载一些数据并生成一个Toast显示数据的数据.虽然我在触摸事件上启动任务但是没有显示吐司,直到我关闭滑块.当滑块关闭并且不再显示地图时,会Toast出现.

有任何想法吗?

好了开始任务

编辑:

public boolean onTouchEvent(MotionEvent event, MapView mapView){ 
    if (event.getAction() == 1) {
        new TestTask(this).execute();
        return true;            
    }else{
        return false;
    }
 }
Run Code Online (Sandbox Code Playgroud)

onPostExecute祝酒

Toast.makeText(app.getBaseContext(),(String)data.result, 
                Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

在新的TestTask(this),这是一个参考,MapOverlay而不是MapActivity,所以这是问题.

Jor*_*sys 835

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

Toast.makeText(getActivity(), (String)data.result, 
   Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

另一个例子:

Toast.makeText(getActivity(), "This is my Toast message!",
   Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

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

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();
Run Code Online (Sandbox Code Playgroud)

  • 如果你把它放在onClick方法中,用getBaseContext()替换getActivity()对我有效. (6认同)
  • @Elen,你需要Activity上下文来制作TOASTS,而不是Application上下文. (3认同)
  • Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show(); (3认同)

Cri*_*vez 80

baseadapter使用此扩展活动

Toast.makeText(getActivity(), 
    "Your Message", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

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

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)


Jay*_*tel 45

句法

Toast.makeText(context, text, duration);
Run Code Online (Sandbox Code Playgroud)

参数值

上下文

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

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

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

文本

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

 (string)num   // type caste
Run Code Online (Sandbox Code Playgroud)

持续时间

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

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

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


Example.1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Run Code Online (Sandbox Code Playgroud)

  • **烤面包的设置持续时间是不可能的,只能是预定义的时间LENGTH_SHORT和LENGTH_LONG **。 (2认同)

小智 22

在Android中祝酒

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

要么

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

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

  • 阅读文档,您只能选择Toast.LENGTH_SHORT或Toast.LENGTH_LONG作为消息持续时间. (6认同)

Mah*_*esh 20

你可以自定义你的东西:

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();
Run Code Online (Sandbox Code Playgroud)

或一般方式:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)


小智 15

我尝试了几次吐司,并为那些他们的吐司给他们错误的人尝试

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)


Ani*_*kur 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();
Run Code Online (Sandbox Code Playgroud)

或通过提供自定义布局文件来制作自定义文件

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
Run Code Online (Sandbox Code Playgroud)


Chr*_*sCM 9

我在这里碰到了答案,并被似乎有人捅人的事实所吸引,他们认为需要一个活动背景.不是这种情况.但是,要求从主事件或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();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我们不需要访问实例来Activity实现此功能.请停止提示是这种情况!如果Activity需要,方法签名不会要求a Context.


has*_*ash 7

如果它是碎片,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)


Yog*_*dha 7

Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

而不是使用"app.getBaseContext()".

您可以尝试使用" getApplicationContext() "或" getContext() ".

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


Anu*_*rag 6

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

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
Run Code Online (Sandbox Code Playgroud)


小智 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**
Run Code Online (Sandbox Code Playgroud)


Khe*_*raj 5

简单的方法

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

public class MainActivity extends BaseActivity
Run Code Online (Sandbox Code Playgroud)