Метод Android changeBackground не найден - PullRequest
0 голосов
/ 24 мая 2018

Android Studio: поэтому я очень просто пытаюсь изменить фоновое изображение своей активной деятельности «Главная страница потока», которая не является моей основной деятельностью, нажав кнопку в этом действии «Главная страница потока».Это должна быть одна строка кода, однако, что бы я ни пытался, я получаю исключение Метод не найден.Даже если я попытаюсь изменить цвет фона, он не будет работать.

public class StreamPageMain extends Activity {

public void changeBackgroundOfStreamPage(){

    StreamPageMain.this.findViewById(android.R.id.content).setBackgroundResource(R.drawable.streaming_background_grey);

    //this.findViewById(android.R.id.content).setBackgroundColor(Color.BLACK);

    //ConstraintLayout mConstraintLayout = (ConstraintLayout)findViewById(R.id.constraintLayout);
    //mConstraintLayout.setBackgroundResource(R.drawable.streaming_background_grey);
}
}

На всех этих трех опциях я получаю одно и то же исключение.Идентификатор моего ограничения Layout в XML-файле - constraintLayout, и кнопка onclick настроена для запуска метода changeBackgroundOfStreamPage () - там нет опечатки, я скопировал название метода.

Нет замечаний от Androidстудия в коде.Я предполагаю, что это как-то связано с таргетингом на constraintLayout / активность, но я не понимаю, почему «это».не делает трюк ...

это исключение:

05-24 11:28:03.646 5776-5776/comn.example.ezio.streamingapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: comn.example.ezio.streamingapp, PID: 5776
java.lang.IllegalStateException: Could not find a method changeBackgroundOfStreamPage(View) in the activity class comn.example.ezio.streamingapp.StreamPageMain for onClick handler on view class android.widget.Button with id 'button4'
at android.view.View$1.onClick(View.java:4015)
at android.view.View.performClick(View.java:4788)
at android.view.View$PerformClick.run(View.java:19896)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5258)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NoSuchMethodException: changeBackgroundOfStreamPage [class android.view.View]
at java.lang.Class.getMethod(Class.java:661)
at java.lang.Class.getMethod(Class.java:640)
at android.view.View$1.onClick(View.java:4008)
at android.view.View.performClick(View.java:4788) 
at android.view.View$PerformClick.run(View.java:19896) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5258) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

1 Ответ

0 голосов
/ 24 мая 2018

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

public static interface View.OnClickListener {

    abstract void onClick(View v);
}

Итак, вы должны включить в свой метод параметр View v, например:

public void changeBackgroundOfStreamPage(View v) {

    StreamPageMain.this.findViewById(android.R.id.content).setBackgroundResource(R.drawable.streaming_background_grey);

}

Это ясно видно из опубликованной вами ошибки:

Could not find a method changeBackgroundOfStreamPage(View) in the activity class comn.example.ezio.streamingapp.StreamPageMain for onClick handler on view class android.widget.Button with id 'button4'
...