1

我正在尝试编写一个程序,将屏幕的背景颜色更改为我决定的颜色。我写了类似的东西,但是当它运行时它崩溃了这是什么问题,请帮助我。这里是 xml 代码

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <LinearLayout 

        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="bottom"
        android:background="#FFFFFF"


        >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Red"
            />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Green" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Blue" />
         <Button
            android:id="@+id/button4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="White" />

    </LinearLayout>

</LinearLayout>

这是.java代码

package com.example.flashlight;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class FlashLight extends Activity {

Button red,green,blue,white;
LinearLayout view;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_flash_light);
    red=(Button) findViewById(R.id.button1);
    green=(Button) findViewById(R.id.button2);
    blue=(Button) findViewById(R.id.button3);
    white=(Button) findViewById(R.id.button4);

    red.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            view.setBackgroundColor(Color.RED);

        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_flash_light, menu);
    return true;
}
}
4

4 回答 4

1

您需要为您的LinearLayout

 <LinearLayout 
    android:id="@+id/view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="bottom"
    android:background="#FFFFFF"

然后初始化你的视图

view = (LinearLayout) findViewById(R.id.view)
red.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        // TODO Auto-generated method stub

        view.setBackgroundColor(Color.RED);

    }
});
于 2012-10-28T12:28:04.733 回答
0

试试这个代码

这对我有用...在你的 xml 文件中,为你的线性布局设置 id 作为视图。

<LinearLayout 

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="bottom"
    android:id="@+id/view"
    android:background="#FFFFFF"


    >

在您的 java 文件中,由于 id,您的线性布局视图为空。

所以把下面的行放在你的java文件中

 view  = (LinearLayout) findViewById(R.id.view);

这对我有用....

快乐的编码..

于 2012-10-29T05:26:59.337 回答
0

您没有将view变量分配给任何东西,这可能会导致NullPointerException代码中出现

尝试在您的 XML 文件中添加以下行LinearLayout

android:id="@+id/view"

并将这一行添加到您的onCreate

view = (LinearLayout)findViewBiId(R.id.view);

于 2012-10-28T12:27:14.567 回答
0

在 onClick 之后使用下面的代码:

view.setBackgroundColor(Color.DKGRAY);

例子:

public void onClick(View v) {
        view.setBackgroundColor(Color.DKGRAY); //Add any color you want
    }
于 2018-01-30T10:27:02.440 回答