2012-10-28 6 views
1

Я пытаюсь написать программу, которая меняет цвет фона экрана на цвет, который я решил. я написал что-то подобное, но, когда он работает он выходит из строя что проблема sthe, пожалуйста, помогите me.here это код 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

вы не назначая view переменной к чему-либо, что, вероятно, вызывает NullPointerException в коде

Попробуйте добавить в файл XML эту строку под LinearLayout:

android:id="@+id/view"

и добавьте эту строку в onCreate:

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

+0

Я сделал то, что вы сказали, и это изменило только линию кнопки, а не фон зала. – nomad

+0

вам нужно добавить 'android: id = @ + id/view' в базовый макет, то есть тот, который покрывает весь фон – thepoosh

+0

большое спасибо. Вы сохранили день: D – nomad

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); 

    } 
}); 
+0

Я сделал то, что вы сказали, и это изменило только линию кнопки, а не фону hall.did, я делаю что-то не так в назначающей кнопке, я имею в виду содержимое обертывания или что-то – nomad

+0

, пытаясь изменить высоту этого 'LinearLayout' на' match_parent' –

+0

спасибо очень я решил свою проблему :)) – nomad

0

Попробуйте этот код

Это будет работать для меня ... В youyr XML-файл набора идентификатора для линейного компоновщика как вид.

<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 ваш вид линейного макета равен null из-за идентификатора.

так выразиться ниже строки в вашем файле Java

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

Это будет работать для меня ....

Счастливый кодирования ..

0

После OnClick использовать этот код ниже:

view.setBackgroundColor(Color.DKGRAY); 

Пример:

public void onClick(View v) { 
     view.setBackgroundColor(Color.DKGRAY); //Add any color you want 
    } 
Смежные вопросы