没有这样的方法异常按钮错误(XML onClick)[重复]
Posted
技术标签:
【中文标题】没有这样的方法异常按钮错误(XML onClick)[重复]【英文标题】:No Such Method Exception button error (XML onClick) [duplicate] 【发布时间】:2014-08-06 15:11:27 【问题描述】:我正在尝试编写一个按钮来首先创建一个文件,然后他们使用电子邮件提供商发送它,但我在 logcat 中不断收到此错误:
Caused by: java.lang.NoSuchMethodException: clickedUpdate [class android.view.View]
我确定我确实遇到了一些非常微不足道的错误,但我似乎找不到它是什么,我浏览了其他问题,但它们不适用于我的情况。顺便说一句,这段代码位于 onCreate 方法之上,并位于常规活动中。
java:
public void clickedUpdate(Context cn, View view)
TextView dLong = (TextView) findViewById (R.id.textLong);
TextView dLat = (TextView) findViewById (R.id.textLat);
String dataLat = dLat.getText().toString();
String dataLong = dLong.getText().toString();
boolean UpdateResume;
if(!(dataLat.equals("") && !(dataLong.equals(""))))
UpdateResume = true;
else
UpdateResume = false;
TelephonyManager telephonemanager =(TelephonyManager)cn.getSystemService(Context.TELEPHONY_SERVICE);
String PhoneNumber = telephonemanager.getLine1Number();
File DataDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"Android/LocationData");
if(!DataDir.exists())
try
DataDir.mkdir();
catch (Exception e)
e.printStackTrace();
File Data = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"BlogData" + File.separator+"Locationer.txt");
if(!Data.exists())
try
Data.createNewFile();
catch (IOException e)
e.printStackTrace();
while (UpdateResume = true)
if (Data.exists())
try
FileWriter fileWriter = new FileWriter(Data);
BufferedWriter bfWriter = new BufferedWriter(fileWriter);
bfWriter.write(PhoneNumber + "," + dataLat + "," + dataLong);
bfWriter.close();
catch (IOException e)
e.printStackTrace();
break;
Intent emailintent = new Intent(Intent.ACTION_SEND);
emailintent.setType("text/plain");
emailintent.putExtra(Intent.EXTRA_EMAIL, new String[]"xxxxxxxxx@xxxxxxxx.com");
emailintent.putExtra(Intent.EXTRA_SUBJECT, "Data");
emailintent.putExtra(Intent.EXTRA_TEXT, "Hello World!");
File root = Environment.getExternalStorageDirectory();
String DataAttachment = "Android/LocationData/Locationer.txt";
File filer = new File(root, DataAttachment);
if (!filer.exists() || filer.canRead())
return;
Uri uri = Uri.fromFile(filer);
emailintent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(emailintent, "Choose an Email provider"));
xml
<Button
android:id="@+id/updatebtn"
android:onClick="clickedUpdate"
android:layout_
android:layout_
android:layout_above="@+id/contactbtn"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/buttonsettings"
android:paddingBottom="80dp"
android:text="@string/updatenow"
android:textColor="#ffffff"
android:textSize="18sp" />
【问题讨论】:
【参考方案1】:方法签名应该是这样的:
public void clickedUpdate(View view)
鉴于您添加了另一个参数 (Context
),Android 无法通过反射找到正确的方法。删除它,您的代码应该可以工作。
【讨论】:
我想补充一下,如果你在函数中需要Context
参数,你可以使用view.getContext()
【参考方案2】:
您的clickedUpdate
方法只能有View
参数。如果你绝对需要使用你传入的Context
变量变量,你可以在activity中让它成为一个实例变量。
【讨论】:
以上是关于没有这样的方法异常按钮错误(XML onClick)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
onClick 方法不是从带有 dataBinding 的 .xml 绑定表达式中调用的