您好,我正在使用 BluetoothChat 示例与 arduino 通信。到目前为止一切正常,现在我想访问 sendMessage() 方法,以便能够不是从主类发送数据,而是从我创建的另一个类发送数据。这是 BluetoothChat.java 中的 BluetoothChat 发送函数
private void sendMessage(String message) {
// Check that we're actually connected before trying anything
if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show();
return;
}
// Check that there's actually something to send
if (message.length() > 0) {
// Get the message bytes and tell the BluetoothChatService to write
byte[] send = message.getBytes();
mChatService.write(send);
// Reset out string buffer to zero and clear the edit text field
mOutStringBuffer.setLength(0);
mOutEditText.setText(mOutStringBuffer);
}
}
现在我想从我的 Config.java 访问它。这是我到目前为止所做的。我将私有 void sendMessage 更改为公共,并在 Config.java 中添加了这些:
BluetoothChat firstClass = new BluetoothChat();
并在 onCreate 这个
firstClass.sendMessage("test");
虽然我在切换到 Config.java 活动时没有收到任何错误,但应用程序崩溃了。
任何人都可以帮我解决这个问题吗?谢谢!
日志猫
10-08 22:49:15.125: D/dalvikvm(1541): GC_EXTERNAL_ALLOC 释放 98K, 47% 空闲 2962K/5511K, 外部 3943K/4883K, 暂停 23ms 10-08 22:49:15.128: D/BluetoothSocket(1541):套接字已经处于关闭状态:android.bluetooth.BluetoothSocket@40535c88 10-08 22:49:15.128:D/BluetoothSocket(1541):套接字已经处于关闭状态:android.bluetooth.BluetoothSocket@40523b10 10-08 22:49:15.296 : E/BluetoothChat(1541): -- ON STOP -- 10-08 22:49:20.585: D/AndroidRuntime(1541): 关闭 VM 10-08 22:49:20.585: W/dalvikvm(1541): threadid =1:线程以未捕获的异常退出(组= 0x40015578)10-08 22:49:20.589:E/AndroidRuntime(1541):致命异常:主要10-08 22:49:20.589:E/AndroidRuntime(1541):java .lang.NullPointerException 10-08 22:49:20.589:E/AndroidRuntime(1541):在 com.example.android.BluetoothChat.BluetoothChat。sendMessage(BluetoothChat.java:218) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 com.example.android.BluetoothChat.Config.onItemSelected(Config.java:45) 10-08 22:49: 20.589: E/AndroidRuntime(1541): 在 android.widget.AdapterView.fireOnSelected(AdapterView.java:871) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 android.widget.AdapterView.access$200( AdapterView.java:42) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:837) 10-08 22:49:20.589: E/ AndroidRuntime(1541): 在 android.os.Handler.handleCallback(Handler.java:587) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 android.os.Handler.dispatchMessage(Handler.java:92 ) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 android.os.Looper.loop(Looper.java:130) 10-08 22:49:20.589:E/AndroidRuntime(1541): 在 android.app.ActivityThread.main(ActivityThread.java:3687) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 java.lang.reflect.Method.invokeNative(Native方法) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 java.lang.reflect.Method.invoke(Method.java:507) 10-08 22:49:20.589: E/AndroidRuntime(1541) : 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:600)10-08 22:49:20.589:E/AndroidRuntime(1541):在 dalvik.system.NativeStart.main(本机方法)E/AndroidRuntime(1541): 在 java.lang.reflect.Method.invoke(Method.java:507) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:842) 10-08 22:49:20.589: E/AndroidRuntime(1541): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 10-08 22 :49:20.589: E/AndroidRuntime(1541): at dalvik.system.NativeStart.main(Native Method)E/AndroidRuntime(1541): 在 java.lang.reflect.Method.invoke(Method.java:507) 10-08 22:49:20.589: E/AndroidRuntime(1541): 在 com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:842) 10-08 22:49:20.589: E/AndroidRuntime(1541): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 10-08 22 :49:20.589: E/AndroidRuntime(1541): at dalvik.system.NativeStart.main(Native Method)