2016-05-21 8 views
0

ユーザーがシークバーをドラッグしたときに、自分のアプリの背景色を変更しようとしています。findViewById(R.id.screen)がnullを返す

私は次のリンク査読している:私はOnSeekBarChangeListener()のコードを次しているSet Background color programmatically

を:

@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()から呼び出されます。seebar()

+0

あなたの画面は同じレイアウトですか? – KDeogharkar

+1

あなたはIDが 'screen'であるビューを持っていません –

+0

@KDeogharkarどのように私はそれを知っていますか? –

答えて

2

someViewがnullになっています。したがって、それはnullポインタ例外を与えます。

はあなたの完全なXMLコードを投稿することができ、変更

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

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

を試してみてください。

+2

null値を 'View'に変換するのは本当に問題ではないと思いますか? – whymatter

+0

は次のように使用できます:if(someView!= null)が必要かもしれません: View daddy =(View)(findViewById(R.id.screen))。getParent(); – Flummox

関連する問題