2017-11-16 23 views
-2
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.setBackgroundColor(int)' on a null object reference. 

これはプログラムを実行したときの結果で、何をすべきか分からない。 私は他の投稿を読むが、問題が何であるかまだ分かっていない。私は "public void onClick(View v)"の "v"を "findViewById"に置き換えたが、まだ動作していない。背景色を変更するが、常にアプリケーションが停止したというエラーが表示される

package com.example.gia.applumini; 

import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.RelativeLayout; 



public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     RelativeLayout bgElement = (RelativeLayout) findViewById(R.layout.activity_main); 
     bgElement.setBackgroundColor(Color.RED); 
     myButtonListenerMethod(); 
    } 

    public void myButtonListenerMethod() { 
     Button button = (Button) findViewById(R.id.button); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       RelativeLayout bgElement = (RelativeLayout) findViewById(R.layout.activity_main); 
       int color = ((ColorDrawable) bgElement.getBackground()).getColor(); 
       if (color == Color.RED) { 
        bgElement.setBackgroundColor(Color.BLUE); 
       } 
       else { 
        bgElement.setBackgroundColor(Color.RED); 
       } 
      } 
     }); 
    } 
} 
+0

あなたは、私が試したと、私は最初のオプションだったのxmlレイアウト –

答えて

0

次のようになり、あなたのコードを調整するようにしてください:

public class MainActivity extends AppCompatActivity { 

RelativeLayout bgElement; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     bgElement = (RelativeLayout) findViewById(R.id.RELATIVELAYOUTID); 
     bgElement.setBackgroundColor(Color.RED); 
     myButtonListenerMethod(); 
    } 

    public void myButtonListenerMethod() { 
     Button button = (Button) findViewById(R.id.button); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int color = ((ColorDrawable) bgElement.getBackground()).getColor(); 
       if (color == Color.RED) { 
        bgElement.setBackgroundColor(Color.BLUE); 
       } 
       else { 
        bgElement.setBackgroundColor(Color.RED); 
       } 
      } 
     }); 
    } 
} 
+0

に代わりにビューidのレイアウトIDを渡しています"activity_main"でエラーが発生しました - simbolを解決できません –

+0

あなたの相対的なレイアウトIDを解決-cannot「RELATIVELAYOUTID」に誤りがあったが、その後私のonCreate – MGRagab

0


RelativeLayout bgElement =(RelativeLayout)findViewById(R.layout.activity_main)を交換してください。 RelativeLayout bgElement =(RelativeLayout)findViewById(R.id.activity_main);

とも相対的なレイアウトのIDは、これに対処するための別のより簡単な方法は、レイアウトのXMLコードを使用することです

+0

でsimbol –

+0

Design ConstraintLayoutのComponent TreeでRelativeLayoutでどのように変更できますか?...ここではエラーが発生しています。 –

0

activity_mainであることを確認してください。あなたのタグに次の属性を追加するだけです:

android:background="#ff0000" 

上記の色は赤色ですので、あなたは好きなようにRGB値を変更できます。

+0

同じエラーです。 –

関連する問題