В приложении, когда я пытаюсь проверить серое значение и нажимаю кнопку, мое приложение отключается. Все остальные переключатели работают отлично, но всякий раз, когда я пытаюсь изменить цвет фона моего макета через серая кнопка, приложение падает. P.S когда я удалил instructionlayout.setBackgroundResource(R.color.grey);
из кода, серый тоже работал просто отлично и поджарил «Серый». Пожалуйста, помогите мне в том, как изменить цвет фона на всех моих макетах без сбоя приложения..setBackgroundResource crashing my app
public void setter(View setv)
{
RelativeLayout instructionlayout = (RelativeLayout)findViewById(R.id.instructionslayout);
switch(setv.getId())
{
case R.id.changecolorbtn:
int id = SelectedRadioButton();
switch(id)
{
case 1:toost("Original");break;
case 2:toost("Grey");instructionlayout.setBackgroundResource(R.color.grey);break;//problem is here
case 3:toost("Red");break;
case 4:toost("Orange");break;
case 5:toost("Yellow");break;
case 6:toost("Green");break;
case 7:toost("Aqua");break;
case 8:toost("Marine");break;
case 9:toost("Purple");break;
case 10:toost("Silver");break;
default:toost("Error! - Select An Option!");
}
break;
}
}
public int SelectedRadioButton()
{
RadioButton original = (RadioButton)findViewById(R.id.origcolor);
RadioButton grey = (RadioButton)findViewById(R.id.grey);
RadioButton red = (RadioButton)findViewById(R.id.red);
RadioButton orange = (RadioButton)findViewById(R.id.orange);
RadioButton yellow = (RadioButton)findViewById(R.id.yellow);
RadioButton green = (RadioButton)findViewById(R.id.green);
RadioButton aqua = (RadioButton)findViewById(R.id.aqua);
RadioButton marine = (RadioButton)findViewById(R.id.marine);
RadioButton purple = (RadioButton)findViewById(R.id.purple);
RadioButton silver = (RadioButton)findViewById(R.id.silver);
int starter = 1;
switch(starter)//take advantage of switch falling without break statement
{
case 1:if(original.isChecked()){return 1;}
case 2:if(grey.isChecked()){return 2;}
case 3:if(red.isChecked()){return 3;}
case 4:if(orange.isChecked()){return 4;}
case 5:if(yellow.isChecked()){return 5;}
case 6:if(green.isChecked()){return 6;}
case 7:if(aqua.isChecked()){return 7;}
case 8:if(marine.isChecked()){return 8;}
case 9:if(purple.isChecked()){return 9;}
case 10:if(silver.isChecked()){return 10;}
}
return -1;//if nothing is checked
}
colors.xml:
<resources>
<color name="original">#25383C</color>
<color name="grey">#484849</color>
<color name="red">#881A27</color>
<color name="orange">#ffa500</color>
<color name="yellow">#CDE707</color>
<color name="green">#00ff00</color>
<color name="aqua">#00FFCC</color>
<color name="marine">#0C0C84</color>
<color name="purple">#630A86</color>
<color name="silver">#c0c0c0</color>
</resources>
LogCat:
10-22 10:32:49.834 17834-17834/dhruvyadav.msplit E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: dhruvyadav.msplit, PID: 17834
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3983)
at android.view.View.performClick(View.java:4654)
at android.view.View$PerformClick.run(View.java:19438)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.view.View$1.onClick(View.java:3978)
Я попытался:
View instructionlayout = (View)findViewById(R.id.instructionslayout);
instructionlayout.setBackgroundColor(R.color.grey);
Как я положил поток пользовательского интерфейса между моим .setBackground кодом ?
http://stackoverflow.com/questions/21598165/showing-error-caused-by-java-lang-reflect-invocationtargetexception –
Правильно проверьте, правильно ли привязано ваше представление viewlayout, используя 'findViewById'. Отлаживайте его по строкам и проверяйте, что команда worklayout не равна нулю. Я думаю, что вы не используете правильный идентификатор. В противном случае в действии ваш код должен работать правильно. –