2011-05-26 49 views
0

我試圖做到這一點,只要複選框被選中,視圖就是一種顏色,當它被取消選中時是另一種顏色,但是當我選中框視圖變黑,然後當我檢查或取消選中該框時,沒有其他事情發生。當複選框被選中或按下按鈕時,setBackgroundColor()在視圖中不起作用

活動:

package fsg.dev.test.checkboxtest; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.view.View.OnClickListener; 
import android.widget.SeekBar; 

public class checkBoxTest extends Activity implements OnClickListener { 
CheckBox checkbox; 
SeekBar seekbar; 
View view; 
Button button; 

private static final String TAG = "Checkbox Test"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    checkbox = (CheckBox) findViewById(R.id.checkbox); 
    seekbar = (SeekBar) findViewById(R.id.seekbar); 
    view = (View) findViewById(R.id.background); 
    button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(this); 
    checkbox.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      final String bool; 
      if(((CheckBox) v).isChecked()){ 
       bool = "True"; 
       Log.d(TAG, bool); 
       setBlue(); 
      } else { 
       bool = "False"; 
       Log.d(TAG, bool); 
       setDefault(); 
      } 
     } 
    }); 
} 

@Override 
public void onClick(View v){ 
    checkbox.toggle(); 
    view.setBackgroundColor(R.color.Color); 
} 

private void setBlue(){ 
    Log.d(TAG, "In setBlue()"); 
    view.setBackgroundColor(R.color.Color); 
} 

private void setDefault(){ 
    Log.d(TAG, "In setDefault()"); 
    view.setBackgroundColor(R.color.Default); 
} 
} 

的main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<CheckBox 
    android:text="Background Color" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checked="false" 
    android:id="@+id/checkbox"> 
</CheckBox> 
<Button 
    android:text="Background Color" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button"> 
</Button> 
<SeekBar 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/seekbar" 
    android:layout_margin="10dip" > 
</SeekBar> 
<View 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/Default" 
    android:id="@+id/background"> 
</View> 

的manifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="fsg.dev.test.checkboxtest" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="10" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> 
    <activity android:name=".checkBoxTest" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 

任何人都可以弄清楚我做錯了什麼?

+0

你從logcat獲得了什麼?是否按預期方式調用方法? – bigstones 2011-05-26 17:07:26

+0

我從logcat沒有得到任何警告或錯誤,我知道所有事情都按預期調用,因爲我追蹤了所有的功能。我試了下面的答案,並解決了我的問題。 – Joe 2011-05-26 17:54:27

回答

1

變化的方法和setBlue()setDefault(),具有: YourActivity.this.setBlue()YourActivity.this.setDefault();

附註:view.setBackgroundColor(R.color.yourColor);替換爲:view.setBackgroundColor(Color.BLUE) ;

+1

嘿感謝您的快速反應......它像一個魅力。雖然我確實將'view.setBackgroundColor(Color.Blue)'更改爲'view.setBackgroundResource(R.color.Color)',這樣我仍然可以使用自定義顏色。 – Joe 2011-05-26 17:56:03

+0

很高興幫助:) – Houcine 2011-05-26 20:42:59

相關問題