没有这样的方法异常按钮错误(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 导致空指针)

尝试在片段中实现 OnClick 侦听器 [重复]

onClick 方法不是从带有 dataBinding 的 .xml 绑定表达式中调用的

在 xml 定义的活动中找不到 onClick 方法

使用 XML onClick 时出现 Android Dialog NoSuchMethodException 错误

Android避免快速双击按钮最简单好用的方式