如何在Android中显示Toast?

时间:2010-08-17 07:25:41

标签: android android-mapview android-asynctask toast

我有一个可以拉起的滑块,然后显示一张地图。我可以上下移动滑块来隐藏或显示地图。当地图在前面时,我可以处理该地图上的触摸事件。每当我触摸时,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的引用,因此这就是问题所在。

21 个答案:

答案 0 :(得分:816)

要在您的应用中显示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();

答案 1 :(得分:76)

使用{/ 1}}使用此

扩展活动
baseadapter

或者如果您正在使用活动或Toast.makeText(getActivity(), "Your Message", Toast.LENGTH_LONG).show();

mainactivity

答案 2 :(得分:43)

语法

Toast.makeText(context, text, duration);

参数值

上下文

  

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

     

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

     

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

文本

  

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

 (string)num   // type caste

持续时间

  

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

     

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

     

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


Example.1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();

Example.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();

答案 3 :(得分:21)

在Android中祝酒

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

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

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

答案 4 :(得分: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();

或一般方式:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();

答案 5 :(得分:15)

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

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

答案 6 :(得分: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();

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

制作自定义文件
Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();

答案 7 :(得分: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();
            }
        });
    }
}

请注意,我们无需访问Activity的实例即可使用此功能。请停止提示是这种情况!如果需要Activity,则方法签名不会要求Context

答案 8 :(得分:7)

如果是片段,

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

答案 9 :(得分:7)

Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

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

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

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

答案 10 :(得分:6)

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

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

答案 11 :(得分: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**

答案 12 :(得分:2)

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

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

答案 13 :(得分:2)

简单方法

toast("Your Message")

OR

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

答案 14 :(得分:2)

enter image description here

语法

Toast.makeText(context, text, duration);

您可以使用 getApplicationContext() getActivity() MainActivity。此(如果活动名称为MainActivity)

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

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

click here to get more information

答案 15 :(得分:1)

这对我有用:

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

答案 16 :(得分:1)

入门方式

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

答案 17 :(得分:1)

内部片段(onCreateView)

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

内部类(onCreate)

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

答案 18 :(得分:0)

从服务中查看吐司

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();
            }
        });
    }
    //....
}

您还可以在您的Application类中放置showToast方法,并在任何地方展示面包。

答案 19 :(得分:0)

如果您想在活动中写一个简单的吐司: 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。将布局显示为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();

答案 20 :(得分:0)

这是另一个:

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>