2014-06-14 48 views
0

這裏是我的.java:多個複選框運行不同的方法

package com.example.clarkrubberfoam; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.ActionBarActivity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.CompoundButton.OnCheckedChangeListener; 
import android.widget.Toast; 

public class PriceEstimator extends ActionBarActivity implements OnCheckedChangeListener { 

double total = 0; 
double md_foam25 = 0.31, md_foam50 = 0.63, md_foam75 = 0.81, md_foam100 = 1.01, md_foam125 = 1.25, md_foam150 = 1.34; 
double hd_foam25 = 0.34, hd_foam50 = 0.66, hd_foam75 = 0.91, hd_foam100 = 1.19, hd_foam125 = 1.48, hd_foam150 = 1.53; 
double ye_foam25 = 0.59, ye_foam50 = 0.94, ye_foam75 = 1.41, ye_foam100 = 1.67, ye_foam125 = 2.09, ye_foam150 = 2.34; 
double oe_foam25 = 0.70, oe_foam50 = 1.37, oe_foam75 = 1.69, oe_foam100 = 2.20, oe_foam125 = 2.64, oe_foam150 = 3.16; 

CheckBox chkMD = (CheckBox) findViewById(R.id.checkBox1); 
CheckBox chkHD = (CheckBox) findViewById(R.id.checkBox2); 
CheckBox chkYE = (CheckBox) findViewById(R.id.checkBox3); 
CheckBox chkOE = (CheckBox) findViewById(R.id.checkBox4); 

/* Called when first opening the app */ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_price_estimator); 

    //Attach listeners to the checkboxes 
    chkMD.setOnCheckedChangeListener(this); 
    chkHD.setOnCheckedChangeListener(this); 
    chkYE.setOnCheckedChangeListener(this); 
    chkOE.setOnCheckedChangeListener(this); 

} 

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    // TODO Auto-generated method stub 

    if (buttonView == chkMD) { 
     if(isChecked) { 
      mediumDensityPrice(); 
     } else { 
      total = total + 0; 
     } 
    } 

    if (buttonView == chkHD){ 
     if(isChecked) { 
      highDensityPrice(); 
     } else { 
      total = total + 0; 
     } 
    } 

    if (buttonView == chkYE) { 
     if(isChecked) { 
      yellowEnduroPrice(); 
     } else { 
      total = total + 0; 
     } 
    } 

    if (buttonView == chkOE) { 
     if(isChecked) { 
      orangeEnduroPrice(); 
     } else { 
      total = total + 0; 
     } 
    } 

} 

public void mediumDensityPrice() { 
    Toast.makeText(getBaseContext(), "Medium Density Selected", Toast.LENGTH_LONG).show(); 
} 

public void highDensityPrice() { 
    Toast.makeText(getBaseContext(), "High Density Selected", Toast.LENGTH_LONG).show(); 
} 

public void yellowEnduroPrice() { 
    Toast.makeText(getBaseContext(), "Yellow Enduro Selected", Toast.LENGTH_LONG).show();; 
} 

public void orangeEnduroPrice() { 
    Toast.makeText(getBaseContext(), "Orange Enduro Selected", Toast.LENGTH_LONG).show();; 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_price_estimator, 
       container, false); 
     return rootView; 
    } 
} 

這裏是我的.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.clarkrubberfoam.PriceEstimator$PlaceholderFragment" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="2dp" 
    android:layout_marginTop="2dp" 
    android:text="@string/price_estimator" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/textView1" 
    android:text="@string/medium_density" /> 

<CheckBox 
    android:id="@+id/checkBox2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/checkBox1" 
    android:layout_below="@+id/checkBox1" 
    android:text="@string/high_density" /> 

<CheckBox 
    android:id="@+id/checkBox3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/checkBox1" 
    android:layout_alignBottom="@+id/checkBox1" 
    android:layout_marginLeft="27dp" 
    android:layout_toRightOf="@+id/checkBox1" 
    android:text="@string/enduro_yellow" /> 

<CheckBox 
    android:id="@+id/checkBox4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/checkBox3" 
    android:layout_below="@+id/checkBox3" 
    android:text="@string/enduro_orange" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/checkBox2" 
    android:layout_below="@+id/checkBox2" 
    android:layout_marginTop="10dp" 
    android:text="@string/enter_width" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/numberPicker1" 
    android:layout_below="@+id/numberPicker1" 
    android:layout_marginTop="30dp" 
    android:onClick="totalPrice" 
    android:text="@string/calculate_me" /> 

<NumberPicker 
    android:id="@+id/numberPicker1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_below="@+id/textView2" 
    android:layout_marginTop="16dp" /> 

<NumberPicker 
    android:id="@+id/numberPicker2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/numberPicker1" 
    android:layout_centerHorizontal="true" /> 

<NumberPicker 
    android:id="@+id/numberPicker3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/textView4" 
    android:layout_alignTop="@+id/numberPicker2" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/numberPicker1" 
    android:layout_alignRight="@+id/numberPicker2" 
    android:text="@string/enter_length" /> 

<TextView 
    android:id="@+id/textView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/numberPicker1" 
    android:layout_alignParentRight="true" 
    android:text="@string/enter_thickness" /> 

我的問題是,當我運行程序,它立即崩潰。我不確定發生了什麼問題。我目前正在嘗試改編另一個複選框程序以滿足我的需求:'http://pulse7.net/android/android-check-box-example/'。

基本上我有四個等級的泡沫和多個厚度,所以每個等級,如果在複選框中選中,都需要導致不同的方法。目前,Toast.makeText部分只是一個佔位符,一旦這部分得到了解,最終會到達那裏:)

乾杯!

回答

0

您必須findViewById()onCreate()方法setContentView()後調用。

public class MainActivity extends Activity { 

    CheckBox chkMD; 
    CheckBox chkHD; 
    CheckBox chkYE; 
    CheckBox chkOE; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_price_estimator); 

     chkMD = (CheckBox) findViewById(R.id.checkBox1); 
     chkHD = (CheckBox) findViewById(R.id.checkBox2); 
     chkYE = (CheckBox) findViewById(R.id.checkBox3); 
     chkOE = (CheckBox) findViewById(R.id.checkBox4); 
     // Attach listeners to the checkboxes 
     chkMD.setOnCheckedChangeListener(this); 
     chkHD.setOnCheckedChangeListener(this); 
     chkYE.setOnCheckedChangeListener(this); 
     chkOE.setOnCheckedChangeListener(this); 

    } 

}