2016-11-15 8 views
-1

При нажатии кнопки приложение просто выходит из строя (здесь файл XML для этого)App происходит сбой при нажатии кнопки

<Button 
    android:text="Beginn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/startButton" 
    android:onClick="getJson" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

И код, который запускается при нажатии кнопки.

public void getJson(){ 
    editSummoner =(EditText) findViewById(R.id.editSummoner); 
    if (editSummoner.getText().length() == 0){ 
     Toast.makeText(getBaseContext(),"Please enter a summoner name", 
       Toast.LENGTH_LONG).show(); 
    } 
    else if (editSummoner.getText().length() >= 1) { 
     Toast.makeText(getBaseContext(),"Summoner name is " + editSummoner.getText().toString(), 
       Toast.LENGTH_LONG).show(); 
    } 
} 

Любое предложение приветствуется, я просмотрел все остальные коды и не нашел никакого искажения. Также приложение работает, когда эта часть кода удаляется, но кнопка не работает.

Отчет об ошибке (Android монитор):

11-15 20:56:20.137 29501-29501/com.example.user.lolstats E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.example.user.lolstats, PID: 29501 
                     java.lang.IllegalStateException: Could not find method getJson(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'startButton' 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
                      at android.view.View.performClick(View.java:5702) 
                      at android.widget.TextView.performClick(TextView.java:10888) 
                      at android.view.View$PerformClick.run(View.java:22541) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:158) 
                      at android.app.ActivityThread.main(ActivityThread.java:7229) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+0

Не могли бы вы представить свой отчет о сбое с консоли? – Sp4Rx

+0

Добавьте код для нажатия кнопки – Aidin

+0

В нем говорится: «java.lang.IllegalStateException: Не удалось найти метод getJson (View) в родительском или предком Контекст для android: атрибут onClick, определенный в классе класса« Являются ли ваши кнопки и метод getJson в той же активности? –

ответ

1

Он ожидает метод getJson(View) с View в качестве параметра, вы определили метод getJson() без параметров.

+0

, почему мне нужно (View view) в качестве параметра и что делать? – motschel123

+0

@ motschel123 это четко указано в документации. – njzk2

0

Вы должны дать Просмотр параметров в ваш метод. Измените метод следующим образом:

public void getJson(View v){ 
    editSummoner =(EditText) findViewById(R.id.editSummoner); 
    if (editSummoner.getText().length() == 0){ 
     Toast.makeText(getBaseContext(),"Please enter a summoner name", 
      Toast.LENGTH_LONG).show(); 
    } 
    else if (editSummoner.getText().length() >= 1) { 
     Toast.makeText(getBaseContext(),"Summoner name is " + editSummoner.getText().toString(), 
      Toast.LENGTH_LONG).show(); 
    } 
} 
0

Вы должны попробовать другой путь.

Удалить строку onClick из вашего xml-файла. И склеить кнопку с помощью метода программно:

В вашем OnCreate метод:

Button startButton = (Button) findViewById(R.id.startButton); 
startButton.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     getJson(); // or you can write here the actual code. 
    } 
}); 
Смежные вопросы