2014-01-22 1 views
-1

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

Integer[] images = {R.drawable.image1,R.drawanle.image2}; 
Random whichImage = new Random(); 
Int theImage= whichImage.nextInt(1); 

View myView= findViewById(R.layout.splash); 
myView.setBackgroundResource 
(imageSelection[theImage]); 
setContentView(myView); 

Нулевой указатель происходит на myView.setBackground. ....

Ура .....

+0

Выполняется ли инициализация 'imageSelection'? Я вижу, что массив, который вы используете для идентификатора изображения, называется образами;) – ThaMe90

ответ

1

Заменить

Integer[] images =  
{R.drawable.image1,R.drawanle.image2}; 

с этим

int[] images = new int[] {R.drawable.image1,R.drawanle.image2}; 
+1

@Aerox Просто писать это не сработает никому не поможет, объясните, что не работает, или задайте свой вопрос. –

+1

@Aerox Мы здесь не для того, чтобы дать плохой код. И очевидно, что данный код не мог работать при определенных условиях. Задайте свой вопрос, чтобы получить индивидуальное решение. –

1
Integer[] images =  {R.drawable.image1,R.drawanle.image2}; 
Random whichImage = new Random(); 

Int theImage= whichImage.nextInt(1); 

setContentView(R.Layout.splash); 
View myView= findViewById(R.id.view); 

myView.setBackgroundResource (imageSelection[theImage]); 
1
//Should this 
Int theImage= whichImage.nextInt(1); 
// be replaced with 
Int theImage= whichImage.nextInt(images.length); 

//Then move your setBackgroundResource call to after you call the setContentView method. 
setContentView(myView); 
myView.setBackgroundResource(image[theImage]); 
2

Вы не можете передать Int на фоне ресурса.

Вместо

myView.setBackgroundResource(imageSelection[theImage]); 

попробовать

myView.setBackgroundResource(getResources().getDrawable(imageSelection[theImage])); 
+0

1) Этот метод не применим для getResources. 2) Это не работает. – Aerox

+1

Прекратите говорить «это не сработает» всем! Вероятно, в вашем конкретном случае вам нужно добавить контекст (переданный как параметр или собственный для Activity) в getResources, в зависимости от вашего кода. –

+1

@Aerox Считаете ли вы, что член коллеги с 11k-реппиком напишет код тарабарщины? В зависимости от вашего кода существует множество решений для данной проблемы. Любое одно решение не является универсальным кодом, применимым ко всем проблемам кодирования в мире. Вы даже писали «Это не работает» на ответ OP! Он бы дал свой ответ после решения проблемы, не так ли? Либо объясните, либо задайте новый вопрос. –

1

Спасибо, там было что-то не так с моей точки зрения MyView реф, я думаю, что это возвращается нуль. Когда я использовал, чтобы получить фон, он работал нормально:

this.getWindow().setBackgroundDrawableResource(imageSelection[theImage]); 
+0

Не работает – Aerox