您好,我使用 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 访问它。这是我到目前为止所做的。我将 private void sendMessage 更改为 public,并在 Config.java 中添加了这些:
BluetoothChat firstClass = new BluetoothChat();
并在 onCreate 这个
firstClass.sendMessage("test");
虽然我在切换到 Config.java 活动时没有收到任何错误,但应用程序崩溃了。
谁能帮我这个?
谢谢!
logcat
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): -- 停止 --
10-08 22:49:20.585:D/AndroidRuntime(1541):关闭虚拟机
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(本机方法)
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(本机方法)
BluetoothChat 类是一个活动。 Activity对象由Android OS管理(created、onCreate、onResume等方法被调用)。
所以,你不应该做这样的事情:
BluetoothChat firstClass = new BluetoothChat();
有几种方法可以重用此功能
a) 从BluetoothChat 复制并将其粘贴到Config(让我们暂时忘记代码重复)。
您需要从 onCreate、onStart 和其他管理 mBluetoothAdaptor 方法的方法中复制代码
b) 如果您要同时保留 BluetoothChat 活动和 Config 活动,则可以将可重用代码移至某个帮助程序类(不是活动)并从这两个活动中使用它。
附:我建议阅读一些有关活动及其生命周期的知识,因为如果没有这些知识,将很难开发任何 Android 应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)