0

以下を見て、私が欠けているものを説明してみてください。私は以前にアプリケーションで以下の方法を使用しましたが、それは完全に機能しました。私が見逃した愚かなことは確かで、誰かにそれを見てもらいたいと思っています...

風量と圧力を入力し、RadioButtonForwardCBDをクリックします。これにより2倍のパワーが発生し、画面に出力されますが、代わりにアプリがクラッシュします。

何か案は?

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

1 に答える 1

1

FCBD、BCBD、BCDDのどこにコンポーネントを割り当てましたか。これはおそらくnullポインタです。

あなたの呼び出し

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

しかし、FCBDをどこで定義/割り当てましたか?

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

それ以外の場合は、デバッグモードでステップスルーすると、プロパティの1つがnullであることがわかります。これは、メソッドを呼び出そうとしています。

于 2012-08-19T11:17:26.430 に答える