2012-08-19 37 views
0

有人可以看看下面的內容,試着解釋我錯過了什麼嗎?我以前在應用程序中使用了下面的方法,並且它的工作很完美。我確定它的東西很愚蠢,我已經錯過了,並希望有人看看它...RadioButton不能正常工作

我輸入空氣量和壓力,然後單擊我的RadioButton ForwardCBD。這應該會產生雙倍的力量,這應該被輸出到屏幕上,但它會導致應用程序崩潰。

任何想法?

EditText AirVolume, Pressure,FCBD,BCBD,BCDD; 
TextView Power; 
RadioGroup Fans; 
RadioButton ForwardCBD, BackwardCBD, BackwardCDD; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.car); 

    AirVolume=(EditText)findViewById(R.id.AirVolume); 
    Pressure=(EditText)findViewById(R.id.Pressure); 

    Power=(TextView)findViewById(R.id.Power); 

    ForwardCBD=(RadioButton)findViewById(R.id.ForwardCBD); 
    BackwardCBD=(RadioButton)findViewById(R.id.BackwardCBD); 
    BackwardCDD=(RadioButton)findViewById(R.id.BackwardCDD); 

    Fans=(RadioGroup)findViewById(R.id.Fans); 
    Fans.setOnCheckedChangeListener(this); 

} 

public void onCheckedChanged(RadioGroup Fans, int aplication) { 

    if (aplication==R.id.ForwardCBD){ 

     double airVolume = Double.parseDouble(AirVolume.getText().toString()); 
     double pressure = Double.parseDouble(Pressure.getText().toString()); 
     double fCBD = Double.parseDouble(FCBD.getText().toString());   
     double power = (airVolume * pressure)/(fCBD /100); 
     DecimalFormat df = new DecimalFormat(); 
     Power.setText(df.format(power)+("W")); 

    } 
    if (aplication==R.id.BackwardCBD){ 

     double airVolume = Double.parseDouble(AirVolume.getText().toString()); 
     double pressure = Double.parseDouble(Pressure.getText().toString()); 
     double bCBD = Double.parseDouble(BCBD.getText().toString());   
     double power = (airVolume * pressure)/(bCBD /100); 
     DecimalFormat df = new DecimalFormat(); 
     Power.setText(df.format(power)+("W")); 

    } 
    if (aplication==R.id.BackwardCDD){ 
     double airVolume = Double.parseDouble(AirVolume.getText().toString()); 
     double pressure = Double.parseDouble(Pressure.getText().toString()); 
     double bCDD = Double.parseDouble(BCDD.getText().toString());   
     double power = (airVolume * pressure)/(bCDD /100); 
     DecimalFormat df = new DecimalFormat(); 
     Power.setText(df.format(power)+("W")); 
    } 

} 
} 

查看下面的LogCat。

不知道如何在這裏以體面的格式呈現它,所以提前抱歉!

08-19 12:10:24.576: E/AndroidRuntime(11733): FATAL EXCEPTION: main 
08-19 12:10:24.576: E/AndroidRuntime(11733): java.lang.NullPointerException 
08-19 12:10:24.576: E/AndroidRuntime(11733): at com.test.will.CarSystems.onCheckedChanged(CarSystems.java:46) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.RadioGroup.setCheckedId(RadioGroup.java:172) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.RadioGroup.access$600(RadioGroup.java:52) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.RadioGroup$CheckedStateTracker.onCheckedChanged(RadioGroup.java:342) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.CompoundButton.setChecked(CompoundButton.java:128) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.CompoundButton.toggle(CompoundButton.java:87) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.RadioButton.toggle(RadioButton.java:75) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.widget.CompoundButton.performClick(CompoundButton.java:99) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.view.View$PerformClick.run(View.java:14400) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.os.Handler.handleCallback(Handler.java:605) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.os.Handler.dispatchMessage(Handler.java:92) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.os.Looper.loop(Looper.java:154) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at android.app.ActivityThread.main(ActivityThread.java:4945) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at java.lang.reflect.Method.invokeNative(Native Method) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at java.lang.reflect.Method.invoke(Method.java:511) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
08-19 12:10:24.576: E/AndroidRuntime(11733): at dalvik.system.NativeStart.main(Native Method) 
+1

Crash = LogCat stacktrace。請大家,添加logcat。 – tolgap 2012-08-19 11:06:13

回答

1

您從哪裏爲FCBD,BCBD,BCDD分配了組件?這可能是空指針。

您的通話

double fCBD = Double.parseDouble(FCBD.getText().toString()); 

但你定義在那裏/分配FCBD即

FCBD=(EditText)findViewById(R.id.FCBD); 

否則,在調試模式下逐步完成,你會發現,你的屬性之一是零,你的試圖調用一個方法。

+0

換句話說,你的XML文件是否正確? – tolgap 2012-08-19 11:25:34

+0

我知道這將是一個愚蠢的錯誤...感謝您指出明顯的,你已經救了我拔出我的頭髮在接下來的幾個小時強調了這一點。 – Will 2012-08-19 11:27:50