我有一个可以向上拉的滑块,然后显示一个地图。我可以上下移动滑块以隐藏或显示地图。当地图在正面时,我可以处理该地图上的触摸事件。每次我触摸, 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>

enter image description here

必须阅读:Android Toast示例

句法

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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top