Android

时间:2017-08-24 20:25:20

标签: android android-studio layout background-color

xml代码:

<RelativeLayout
    android:layout_width="193dp"
    android:layout_height="100dp"
    android:background="@color/RED"
    android:layout_alignParentBottom="true"
    android:id="@+id/butt1"></RelativeLayout>
<RelativeLayout
    android:layout_width="193dp"
    android:layout_height="100dp"
    android:background="@color/YELLOW"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:id="@+id/butt2"></RelativeLayout>
<RelativeLayout
    android:layout_width="193dp"
    android:layout_height="100dp"
    android:background="@color/BLUE"
    android:layout_above="@+id/butt2"
    android:layout_alignParentRight="true"
    android:id="@+id/butt3"></RelativeLayout>
<RelativeLayout
    android:layout_width="193dp"
    android:layout_height="100dp"
    android:background="@color/GREEN"
    android:layout_above="@+id/butt1"
    android:id="@+id/butt4"></RelativeLayout>

java代码:

butt4 = (RelativeLayout)findViewById(R.id.butt4);
    butt3 = (RelativeLayout)findViewById(R.id.butt3);
    butt1 = (RelativeLayout)findViewById(R.id.butt1);
    butt2 = (RelativeLayout)findViewById(R.id.butt2);
  butt1.setBackgroundColor(Color.RED);
  butt2.setBackgroundColor(Color.BLUE);
  butt3.setBackgroundColor(Color.GREEN);
  butt4.setBackgroundColor(Color.YELLOW);

日志:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 
'void android.view.View.setBackgroundColor(int)' on a null object reference
                                                                        at com.example.chirag.red.Hard.change(Hard.java:73)
                                                                        at com.example.chirag.red.Hard.onCreate(Hard.java:53)
                                                                        at android.app.Activity.performCreate(Activity.java:6672)
                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) 
                                                                        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
                                                                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                        at android.os.Looper.loop(Looper.java:154) 
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6123) 
                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

每次此活动开始时,应用都会崩溃。错误总是在行“butt1.setBackgroundColor()”,它给我一个空指针异常。我给布局一个id,引用它并且还传递了一个颜色作为方法中的参数。我真的不知道我哪里出错了。请帮忙!

2 个答案:

答案 0 :(得分:0)

这是正确的方法:

 butt1.setBackgroundColor(getResources().getColor(R.color.red));

您必须在colors.xml中定义颜色

<color name="red">#ff0000</color>

答案 1 :(得分:0)

你有一个空...然后可能是某些原因

findViewById(xxxx)返回null。

一 - 检查你是否正确:

 android:id="@+id/xxx">

二 - Java代码对应于xml?可以做出不同的参考..

输入完整的代码。