无法解析Toast的maketext()方法

我在创建Toast时遇到错误

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

我得到无法解决Toast makeText()方法。

我收到了这个错误

java:没有为makeTextfind合适的方法(idtech.ESDN.ShapeData,java.lang.CharSequence,int)方法android.widget.Toast.makeText(android.content.Context,int,int)不适用(实际参数idtech。 ESDN.ShapeData无法通过方法调用转换转换为android.content.Context)方法android.widget.Toast.makeText(android.content.Context,java.lang.CharSequence,int)不适用(实际参数idtech.ESDN。 ShapeData无法通过方法调用转换转换为android.content.Context)

makeText的签名如下

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

第一个参数必须是上下文对象。 你把this ,但这引用了这个对象,它可以是一个不同于Activity (例如Fragment )的东西。

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

Toast.makeText(getApplicationContext(),“Your Message”,Toast.LENGTH_LONG);

你导入了toast小部件吗?

 import android.widget.Toast; 

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

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

希望有所帮助。

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

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

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

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

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

“`

Toast.makeText(YourActivity.this,text,duration).show();

如果您尝试在MainActivity中烘焙文本,请执行以下操作:

 Toast.makeText(getApplicationContext(), "Your text", Toast.LENGTH_LONG).show(); 

我遇到了类似的问题,但在我的情况下,我发现Android Studio中的Xamarin c#和Java在调用某些函数(相同的函数)时有所不同。

使用Xamarin和c#时,makeText变为MakeText并显示为Show,如下所示:

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

希望这可以帮助:)

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

 Toast.makeText(Your_Fragment_Name.super.getContext(), "Added", Toast.LENGTH_SHORT).show(); 

我在android studio中遇到过类似的问题,我通过在片段中使用getActivity()代替this来解决这个问题

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

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

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

也有类似的问题但是

 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; }