【问题标题】:How to display Toast in Android?如何在 Android 中显示 Toast?
【发布时间】:2011-03-30 20:03:33
【问题描述】:

我有一个可以拉起的滑块,然后它会显示一张地图。我可以上下移动滑块来隐藏或显示地图。当地图在前面时,我可以处理该地图上的触摸事件。每次我触摸时,AsyncTask 都会启动,它会下载一些数据并生成一个显示数据的Toast。虽然我在触摸事件上启动任务,但没有显示 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 相关的格式良好的库,请查看:stackoverflow.com/a/18280318/1891118
  • 几乎都是关于Toast的...简单教程....click here

标签: android android-mapview android-asynctask toast


【解决方案1】:

内部片段 (onCreateView)

Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();

类内部 (onCreate)

Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();

【讨论】:

    【解决方案2】:

    入门方法

    Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
    

    【讨论】:

      【解决方案3】:

      Must read: Android Toast Example

      语法

      Toast.makeText(context, text, duration);
      

      您可以使用 getApplicationContext()getActivity()MainActivity.this(如果 Activity 名称为 MainActivity)

      Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();
      

      Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();
      

      【讨论】:

        【解决方案4】:

        这是另一个:

        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>

        【讨论】:

          【解决方案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();
              }
          }
          

          并通过BaseActivity 扩展您的所有活动。

          public class MainActivity extends BaseActivity
          

          【讨论】:

            【解决方案6】:

            如果你想在你的活动中写一个简单的祝酒词: 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.将图像显示为Toast:--

            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. 将布局显示为 Toast:--

            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();

            【讨论】:

              【解决方案7】:
              Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();
              

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

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

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

              【讨论】:

                【解决方案8】:

                显示服务中的 Toast

                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。

                【讨论】:

                  【解决方案9】:

                  这对我有用:

                  Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();
                  

                  【讨论】:

                    【解决方案10】:

                    在 Android 中敬酒

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

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

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

                    【讨论】:

                    • 阅读文档,您只会选择 Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG 作为消息持续时间。
                    【解决方案11】:

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

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

                    【讨论】:

                      【解决方案12】:

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

                      【讨论】:

                      • @Elen,您需要 Activity 上下文来制作 TOAST,而不是 Application 上下文。
                      • 实际上,要求 Activity 上下文是不正确的。然而,让 toasts 在活动之外工作(例如在系统服务中)需要访问主循环。发布我的解决方案。
                      • 如果你把它放在 onClick 方法中,用 getBaseContext() 替换 getActivity() 对我有用。
                      • @PhilipBelgrave-Herbert 很遗憾,您的链接已失效。
                      • Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
                      【解决方案13】:

                      我已经尝试了几个吐司,对于那些吐司给他们错误的人尝试

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

                      【讨论】:

                        【解决方案14】:

                        我在这里遇到了答案,并被似乎有人在四处闲逛,认为需要 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

                        【讨论】:

                          【解决方案15】:

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

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

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

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

                          【讨论】:

                          • 没有基本适配器或主活动之类的东西,toast 仅通过传递参数应用程序上下文、消息、持续时间长/短来显示
                          【解决方案16】:
                           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**
                          

                          【讨论】:

                            【解决方案17】:

                            如果是片段,

                            Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                                               Toast.LENGTH_LONG).show();
                            

                            【讨论】:

                              【解决方案18】:

                              有两种方法可以做到。

                              要么使用内置的 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 上下文来制作 TOASTS,而不是 Application 上下文。
                              • android 文档特别提到了应用程序上下文:“此方法采用三个参数:应用程序上下文、文本消息和 toast 的持续时间。它返回一个正确初始化的 Toast 对象。”
                              【解决方案19】:

                              语法

                              Toast.makeText(context, text, duration);
                              

                              参数值

                              上下文

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

                              getBaseContext() - 如果您想从应用程序中的另一个上下文访问上下文,您可以访问。

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

                              文字

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

                               (string)num   // type caste
                              

                              持续时间

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

                              【讨论】:

                              • 用户定义的 5000 毫秒 toast 延迟。
                              • 很好的解释,但是您需要 Activity 上下文来制作 TOASTS,而不是 Application 上下文。
                              • 好吧,像 (string)num 这样的转换还没有被引入 Java。尝试 Integer.toString() 或类似的。
                              • 无法为 toast 设置持续时间,只能设置预定义的时间,LENGTH_SHORT & LENGTH_LONG
                              【解决方案20】:

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

                              Toast toast = new Toast(getApplicationContext());

                              toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                              
                              toast.setDuration(Toast.LENGTH_LONG);
                              
                              toast.show();
                              

                              【讨论】:

                                【解决方案21】:

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

                                【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2023-03-29
                                • 2014-12-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多