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

あなたはあなたにIDを割り当てる必要があります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

view変数を何にも割り当てていないためNullPointerException、コードにが含まれている可能性があります

XMLファイルの次の行をLinearLayout:の下に追加してみてください。

android:id="@+id/view"

onCreateそして、この行をあなたの:に追加します

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

于 2012-10-28T12:27:14.567 に答える
0

このコードを試してください

これは私にとってはうまくいくでしょう...youyrxmlファイルで、ビューとしての線形レイアウトの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が原因で線形レイアウトビューがnullになっています。

したがって、Javaファイルの行の下に配置します

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

これは私のために働くでしょう....

ハッピーコーディング..

于 2012-10-29T05:26:59.337 に答える
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 に答える