25

我在创建一个Toast

Toast toast = Toast.makeText(this, text, duration);

我越来越无法解决makeText().Toast

我收到此错误

java: no suitable method found for makeText(idtech.ESDN.ShapeData,java.lang.CharSequence,int)
    method android.widget.Toast.makeText(android.content.Context,int,int) is not applicable
      (actual argument idtech.ESDN.ShapeData cannot be converted to android.content.Context by method invocation conversion)
    method android.widget.Toast.makeText(android.content.Context,java.lang.CharSequence,int) is not applicable
      (actual argument idtech.ESDN.ShapeData cannot be converted to android.content.Context by method invocation conversion)
4

19 回答 19

32

makeText 的签名如下

public static Toast makeText (Context context, CharSequence text, int duration)

第一个参数必须是上下文对象。你放this, butthis 指的是这个对象,它可以是不同于ActivityFragment例如 a)的东西。

于 2013-07-18T07:13:18.313 回答
27

在您的情况下,这可能不是活动的对象。您可能在 Click Listener 对象中使用了 Toast.makeText 方法。要解决此问题,您需要使用 getApplicationContext() :

Toast.makeText(getApplicationContext() , "你的消息", Toast.LENGTH_LONG);

于 2015-07-11T11:21:02.150 回答
9

您是否已导入吐司小部件?

import android.widget.Toast;

如果要立即输出,也可以在同一行中调用 show():

Toast toast = Toast.makeText(context, text, duration).show();

希望有帮助。

于 2013-07-18T07:11:07.760 回答
7

在上下文中的onClick(View view)单击侦听器中,使用RecyclerView.ViewHolder检索view.getContext(),如下所示:

```

public class MyHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener {

    public MyHolder(View itemView) {
        super(itemView);
        //...
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        Toast.makeText(view.getContext(), "the message", 
            Toast.LENGTH_SHORT).show();
    }

```

于 2017-06-21T16:44:41.387 回答
5

确保键入: Toast toast = Toast.makeText(this, text, duration);

不是: Toast toast = new Toast.makeText(this, text, duration);

于 2013-11-19T13:54:10.487 回答
3

尝试Toast toast = Toast.makeText(getActivity(), text, duration);

.show()如果您希望它显示,您可能还希望附加

于 2013-07-18T07:25:57.693 回答
2
Toast.makeText(YourActivity.this, text, duration).show();
于 2013-07-18T07:14:32.430 回答
2

代替

Toast toast = Toast.makeText(this, text, duration);  

在“这个”字之前添加您的活动名称

Toast toast = Toast.makeText(MyActivity.this, text, duration); 
于 2019-01-06T01:43:32.317 回答
2

如果在选项卡式活动中的片段中出现 Toast,请使用 getContext() 例如

Toast.makeText(getContext(), "Your Text Here", Toast.LENGTH_SHORT).show();

于 2019-09-17T08:55:35.343 回答
1

如果您尝试Toast在 MainActivity 中输入文本,请执行以下操作:

Toast.makeText(getApplicationContext(), "Your text", Toast.LENGTH_LONG).show();
于 2017-01-26T12:24:26.903 回答
1

我在android studio中遇到过类似的问题,我通过使用getActivity()而不是this在片段中解决了这个问题

Toast.makeText(getActivity(), "Your Text", Toast.LENGTH_SHORT).show();
于 2018-01-24T10:05:31.837 回答
1

从调用活动中获取上下文(例如 this 或 MainActivity.this)并将其传递给 Toast 所在的方法。这样它就与调用活动一起存在。

从 getApplicationContext() 和 getContext() 获得的应用程序上下文主要用于长时间运行的进程。将它用于短期进程可能会导致内存泄漏

于 2018-07-02T18:31:32.967 回答
0

我遇到了类似的问题,但就我而言,我发现 Android Studio 中的 Xamarin c# 和 Java 在调用某些函数(相同的函数)时存在差异。

使用Xamarin和c#时,makeText变成MakeText,show变成Show,如下图:

Toast toast = Toast.MakeText(this, "Text", ToastLength.Long);
toast.Show();

希望这可以帮助:)

于 2016-10-18T07:21:53.480 回答
0

如果您尝试在 Fragment 中使用 Toast,这可能会有所帮助:

Toast.makeText(Your_Fragment_Name.super.getContext(), "Added", Toast.LENGTH_SHORT).show();
于 2018-01-22T08:19:00.397 回答
0

也有类似的问题,但是

getContext()

为我做了伎俩

// If message field is empty show a toast and alert the user
if (TextUtils.isEmpty(message)) {
   Toast.makeText(getContext(),"Please Enter a message", Toast.LENGTH_SHORT).show();
   return;
}
于 2018-08-17T01:08:17.423 回答
0

首先添加

 import android.widget.Toast;

声明如果你还没有然后

Toast.makeText(YourActvityName.this, "Your Text", Toast.LENGTH_SHORT).show();
于 2018-10-24T05:52:05.310 回答
0

在 onClick 方法中试试这个


Toast.makeText(view.getContext(), "sorry", Toast.LENGTH_LONG).show();


它确实对我有用。

于 2019-09-23T22:07:18.780 回答
0

就像 Blackbelt 所说的 Toast 的语法如下:

Toast.makeText(Activity.this, "Message",Toast.<specify Lenght>).show();

Activity.this当前活动在哪里,Message是您要显示的字符串,Toast.length是您希望它显示的长度。

于 2020-05-24T14:45:53.127 回答
0

假设您正在片段中创建 toast ....所以在上下文中使用 getactivity

假设您正在片段中创建 toast ....所以在上下文中使用 getactivity

Toast.makeText(getActivity,"Your Text",Toast.LENGTH_SHORT).show();
于 2021-05-15T05:43:49.750 回答