我正在尝试编写一个程序,将屏幕的背景颜色更改为我决定的颜色。 我写了类似的东西但是当它运行时崩溃了 什么是问题,请帮助我。这是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;
}
}
答案 0 :(得分: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);
}
});
答案 1 :(得分:0)
您没有将view
变量分配给任何内容,这可能会导致代码中出现NullPointerException
尝试在LinearLayout
:
android:id="@+id/view"
并将此行添加到onCreate
:
view = (LinearLayout)findViewBiId(R.id.view);
答案 2 :(得分:0)
试试此代码
这对我有用...... 在您的线性布局的youyr 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);
这对我有用....
快乐编码..
答案 3 :(得分:0)
在onClick之后使用以下代码:
view.setBackgroundColor(Color.DKGRAY);
示例:
public void onClick(View v) {
view.setBackgroundColor(Color.DKGRAY); //Add any color you want
}