2016-05-21 6 views
0

Я пытаюсь изменить цвет фона моего приложения, когда пользователь перетаскивает поиск.findViewById (R.id.screen) возвращает null

Я судил по следующей ссылке: Set Background color programmatically

Я следующий код в OnSeekBarChangeListener():

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    View someView = findViewById(R.id.screen); 
    View root = someView.getRootView(); 
    root.setBackgroundColor(Color.argb(255, r[progress], g[progress], b[progress])); 
} 

Это приводит к следующей аварии:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' on a null object reference 

Mainactivity класс:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setRandomcolors(); 
     setbuttonclicklistener(); 
     seebar(); 
    } 

OnSeekBarChangeListener() называется from seebar()

+0

Ваш экран в одном макете? – KDeogharkar

+1

У вас нет изображения с идентификатором 'screen' –

+0

@KDeogharkar, как я узнаю это? –

ответ

2

Вы получаете someView как null. Таким образом, он дает исключение из нулевого указателя.

изменение Try,

View someView = findViewById(R.id.screen); 

в

View someView = (View)findViewById(R.id.screen); 

Вы можете разместить свой полный код XML.

+2

Я думаю, что не имеет значения, преобразует ли он значение null в «Вид»? – whymatter

+0

может использовать: if (someView! = Null), но вам может понадобиться следующее: View daddy = (View) (findViewById (R.id.screen)). GetParent(); – Flummox

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