2016-12-27 3 views
2

Я новичок в Android Studio и по какой-то причине испытываю действительно странные ошибки, если я мог бы получить некоторую помощь.Android Studio - кнопка Click Crash (Простой)

У меня есть очень простой код, который, как предполагается, при нажатии кнопки меняет текст моей кнопки с «button» на «clicked!». Однако каждый раз, когда я нажимаю кнопку, приложение падает, и я получаю «Appname остановлен» на эмуляторе.

Что невероятно странно, что в моей activity_main.xml зрения дизайна, раскрывающийся OnClick показывает две функции одного и того же имени (https://puu.sh/t2h5I/42ad4379d6.png)

H owever код работает только тогда, когда выбран нижний. И каждый раз, когда я запускаю приложение, он отменяет выбор нижнего и повторно выбирает верх, только чтобы прекратить работу.

Вот мой MainActivity:

package com.example.john.ameladay; 


import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

    public Button melButtonCode; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void buttonPress(View v){ 
     melButtonCode = (Button) v; 
     ((Button) v).setText("Has been clicked!"); 

    } 
} 

Вот мой activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.john.ameladay.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/mainText" 
    android:id="@+id/textView" /> 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/mela" 
    android:id="@+id/melPhoto" /> 

<Button 
    android:text="Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_toRightOf="@+id/textView" 
    android:layout_toEndOf="@+id/textView" 
    android:layout_marginLeft="32dp" 
    android:layout_marginStart="32dp" 
    android:layout_marginBottom="43dp" 
    android:id="@+id/button" 
    android:onClick="buttonPress (MainActivity)" /> 

Любая помощь будет высоко оценена !!

+0

Просьба поделиться Поделиться Сообщить об ошибке –

+0

Где вы звоните buttonPress функция? –

+0

используйте onclicklistner вместо onclick и покажите тост или что-нибудь на вашей кнопке, нажмите вот так: –

ответ

1

Просто замените этот тег в кнопку

Удалить этот

android:onClick="buttonPress (MainActivity)" 

и вставьте

android:onClick="buttonPress" 
0

По мне это лучший способ установить кнопку на

public class MainActivity extends AppCompatActivity { 

    public Button melButtonCode; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     melButtonCode = (Button).findViewById(R.id.button);//find button by Id 
     melButtonCode.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       melButtonCode.setText("Has been clicked!"); 
      } 
     }); 
    } 
} 

Для вашей проблемы

заменить его

android:onClick="buttonPress (MainActivity)" 

С

android:onClick="buttonPress" 
1

Лучший способ сделать это, получить ссылку на эту кнопку в y наш код Java с помощью метода findViewById() и установите OnClickListener на кнопку.

Для текущей проблемы, используйте

android:onClick="buttonPress" 

вместо

android:onClick="buttonPress (MainActivity)" 
2

Simple. Вы должны написать:

android:onClick="buttonPress" 

Почему произошел

Если вы написали buttonPress (MainActivity), Android пытается найти buttonPress (MainActivity) метод (не MainActivity.buttonPress()), но MainActivity не buttonPress (MainActivity) метода. Так что ошибка произошла.

0

Сделать метод общедоступным, если вы находитесь в режиме мгновенного доступа, но не тогда, когда нет. Не знаю, почему!

+0

Метод _Which_ следует обнародовать? – Landschaft

+0

Рассмотрите возможность добавления некоторого кода, описывающего, какой метод следует публиковать. –

Смежные вопросы