したがって、私は基本的にこの問題があります。私は、私の断片からarduinoにデータを転送しようとするまで、私はlogcatにエラーがスローされます:NullPointerExceptionフラグメント内のBluetoothデータ転送
私は、ブルートゥースを介してarduinoと通信しようとすると、すべてが主な活動からarduinoにデータを送信すると大丈夫だったここ**java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.administradora.prueba.MainActivity$ConnectedThread.write(java.lang.String)' on a null object reference**
public class ConnectedThread extends Thread {
private final InputStream mmInStream;
private final OutputStream mmOutStream;
//creation of the connect thread
public ConnectedThread(BluetoothSocket socket) {
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
//Create I/O streams for connection
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[256];
int bytes;
// Keep looping to listen for received messages
while (true) {
try {
bytes = mmInStream.read(buffer); //read bytes from input buffer
String readMessage = new String(buffer, 0, bytes);
// Send the obtained bytes to the UI Activity via handler
bluetoothIn.obtainMessage(handlerState, bytes, -1, readMessage).sendToTarget();
} catch (IOException e) {
break;
}
}
}
//write method
public void write(String input) {
byte[] msgBuffer = input.getBytes(); //converts entered String into bytes
try {
mmOutStream.write(msgBuffer); //write bytes over BT connection via outstream
} catch (IOException e) {
//if you cannot write, close the application
Toast.makeText(getBaseContext(), "La Conexión fallo", Toast.LENGTH_LONG).show();
finish();
}
}
}`
....通信するConnectedThreadクラスであり、ここでは、IMがデータを送信しようとしているところから、私のフラグメントのJavaクラスです:
public class exterior extends Fragment {
public MainActivity.ConnectedThread mConnectedThread;
public exterior() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v=inflater.inflate(R.layout.fragment_exterior,container,false);
ToggleButton garage,lucext;
garage=(ToggleButton)v.findViewById(R.id.garage);
garage.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked){
mConnectedThread.write("7");
Toast.makeText(getActivity(),"On",Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Off",Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
}
誰かが、それを解決する方法のおかげで誰もが知っている
public MainActivity.ConnectedThread mConnectedThread;
希望***(以下、私はエラーを修正しようとしているが、かなり多くの働くようdidntの追加行があります)。
あなたは私が何を割り当てる必要がありますmConnectedThread –
に何を割り当てることはありませんを追加するには、フラグメントに続いてフラグメント取引
を開始どこ?助けてください –
Fragment *内の '新しいConnectedThread' *に' mConnectedThread'を割り当てる必要があります。アクティビティ*の値は、明示的に設定しない限り、共有されません。 –