我在创建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; }