0

radioButtonsの使用に問題があります。私は、ブルートゥース経由でフレームを送信し、radioButtonsの1つをチェックしてフレームにプレフィックスを追加したいと思います。プレフィックスやプレフィックスをコードに永久に追加せずにフレームを送信することに問題はありません。送信する機能があります:MainActivityでラジオボタンの使い方は?

void sendFrame()throws IOException{ 

    if (radioRTR.isChecked()){ 
     mmOutputStream.write(170); // 0xAA hex 
    } 
    else if (radioMonitorFMASK.isChecked()){ 
     mmOutputStream.write(187); // 0xBB hex 
    } 
    else if (radioMonitorFMASK.isChecked()) { 
     mmOutputStream.write(204); // 0xCC hex 
    } 
    else if (radioFMASK.isChecked()) { 
     mmOutputStream.write(221); // 0xDD hex 
    } 
    else if (radioFID.isChecked()) { 
     mmOutputStream.write(238); // 0xEE hex 
    } 

    mmOutputStream.write(170); // 0xAA hex - prefix added permanently, only to check 
    mmOutputStream.write(hexToDec(numer_filtra.getText().toString())); 
    mmOutputStream.write(hexToDec(ID.getText().toString())); 
    mmOutputStream.write(hexToDec(filtr_ID.getText().toString())); 
    mmOutputStream.write(hexToDec(filtr_maska.getText().toString())); 
    myLabel.setText("Frame sent"); 
} 

のRadioButton:OnCreateイベントで

RadioButton radioRTR; 
RadioButton radioMonitorFMASK; 
RadioButton radioMonitorFID; 
RadioButton radioFID; 
RadioButton radioFMASK; 

():

 RadioButton radioRTR = (RadioButton)findViewById(R.id.radioRTR); 
    RadioButton radioMonitorFMASK = (RadioButton)findViewById(R.id.radioMonitorFMASK); 
    RadioButton radioMonitorFID = (RadioButton)findViewById(R.id.radioMonitorFID); 
    RadioButton radioFMASK = (RadioButton)findViewById(R.id.radioFMASK); 
    RadioButton radioFID = (RadioButton)findViewById(R.id.radioFID); 

私はsendFrame()、アプリケーションを呼び出すようにしようとしています仕事をやめる。どこが間違っていますか? Android Studio 2.2.3でプログラミングしています。スタックトレースから

メッセージ:アンドロイドスタジオは私のデバイスを見ることができないので、

--------- beginning of crash 

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.gieorgij.interfejsnowy, PID: 3171 
       java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.RadioButton.isChecked()' on a null object reference 
        at com.example.gieorgij.interfejsnowy.MainActivity.sendFrame(MainActivity.java:307) 
        at com.example.gieorgij.interfejsnowy.MainActivity$4.onClick(MainActivity.java:152) 
        at android.view.View.performClick(View.java:5610) 
        at android.view.View$PerformClick.run(View.java:22265) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6077) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

がUnfortunely私は、アプリをデバッグすることはできません。私は仮想マシンでのみデバッグできます。

+2

スタックトレースを提供できますか? –

+0

エラーログには何が表示されますか? –

+0

@TorhanBartelスタックトレースを編集して追加しました。それがあなたが必要とするものかどうか教えてください。 – Juras

答えて

1

これはOnCreate関数でエラー

()である:

RadioButton radioRTR = (RadioButton)findViewById(R.id.radioRTR); 
RadioButton radioMonitorFMASK = (RadioButton)findViewById(R.id.radioMonitorFMASK); 
RadioButton radioMonitorFID = (RadioButton)findViewById(R.id.radioMonitorFID); 
RadioButton radioFMASK = (RadioButton)findViewById(R.id.radioFMASK); 
RadioButton radioFID = (RadioButton)findViewById(R.id.radioFID); 

onCreate()メソッドで次のようにします。

radioRTR = (RadioButton)findViewById(R.id.radioRTR); 
radioMonitorFMASK = (RadioButton)findViewById(R.id.radioMonitorFMASK); 
radioMonitorFID = (RadioButton)findViewById(R.id.radioMonitorFID); 
radioFMASK = (RadioButton)findViewById(R.id.radioFMASK); 
radioFID = (RadioButton)findViewById(R.id.radioFID); 

onCreate()メソッドでローカル変数を作成し、グローバル変数の代わりにradioButtonをバインドしました。

+0

ありがとう、今それは動作します! – Juras

0

あなたのオブジェクトはXMLのradioButtonに束縛されていないか、またはradioButtonsを初期化する前にsendFrames()を呼び出しているようです。 onCreateで

()これらのラジオボタンを初期化: はクラスにこれらの変数はグローバルください:コードの下にチェック

radioRTR = (RadioButton)findViewById(R.id.radioRTR); 
radioMonitorFMASK = (RadioButton)findViewById(R.id.radioMonitorFMASK); 
radioMonitorFID = (RadioButton)findViewById(R.id.radioMonitorFID); 
radioFMASK = (RadioButton)findViewById(R.id.radioFMASK); 
radioFID = (RadioButton)findViewById(R.id.radioFID); 

radioGroup = (RadioGroup)findViewById(R.id.radio_group); 
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
       //handle your click here 
     } 
}); 

sendFrames(); 
関連する問題