Нет такой ошибки кнопки исключения метода (XML onClick)

Я пытаюсь запрограммировать кнопку, чтобы сначала создать файл, который они отправляют с помощью поставщика электронной почты, но я продолжаю получать эту ошибку в logcat:

Caused by: java.lang.NoSuchMethodException: clickedUpdate [class android.view.View]

Я уверен, что я получаю что-то действительно тривиальное неправильно, но я не могу найти, что это такое, я просмотрел другие вопросы, но они не относятся к моему делу. Кстати, этот код находится над методом onCreate и внутри обычной активности.

Ява:

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[]{"[email protected]"});
        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_width="wrap_content"
        android:layout_height="wrap_content"
        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" />

person user36606    schedule 06.08.2014    source источник


Ответы (2)


Подпись метода должна быть именно такой:

public void clickedUpdate(View view)

И учитывая, что вы добавили еще один параметр (Context), Android не может найти правильный метод с помощью отражения. Удалите его, и ваш код должен работать.

person Egor    schedule 06.08.2014
comment
Я бы добавил, если вам нужен параметр Context в функции, вы можете использовать view.getContext() - person codeMagic; 06.08.2014

Ваш метод clickedUpdate может иметь только параметр View. Если вам абсолютно необходимо использовать переменную Context, которую вы передали, вы можете сделать ее переменной экземпляра в действии.

person Brett Haines    schedule 06.08.2014