android BluetoothChat 使用来自另一个类的发送接收方法

2024-01-11

您好,我使用 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(使用前将#替换为@)

android BluetoothChat 使用来自另一个类的发送接收方法 的相关文章

  • 如何在android studio中使用maven

    我想用底部栏 https github com roughike BottomBar我的项目中的库 当我添加正确的gradle命令在build gradle文件和sync 我收到此错误 Failed to resolve com rough
  • Android gridview 在片段适配器构造函数中丢失

    我正在尝试实现图像网格 我在一项活动中通过参考这个做到了这一点link http developer android com guide topics ui layout gridview html example现在 如果我尝试在扩展 F
  • java.lang.IllegalStateException:无法为 X 创建层 - 使用硬件层时

    我在自定义视图上使用硬件层 以便在为其 Alpha 制作动画时获得更好的性能 在我的崩溃记者上看到这次崩溃 Fatal Exception java lang IllegalStateException Unable to create l
  • Android Google Cast 通知禁用

    我将 Google Cast 集成到了我的 Android 应用程序中 我的所有内容都是通过带有通知的服务播放的 当我使用 Google Cast 播放媒体时 它会添加自己的通知 是否可以禁用默认的谷歌强制转换通知并仅使用自己的通知 谢谢
  • 更改 Android XML 中的形状颜色

    我有 android 绘图 我将应用到几个 TextView 的背景
  • 主应用程序下载另一个应用程序然后使用它

    What I want to do is maybe hard to explain or to understand so I made a quick drawing 首先 我们有 2 个 Android 应用程序 一个显示器 你好世界
  • onPageSelected 不适用于第一页

    我的寻呼机适配器 扩展 PagerAdepter 中有一个文本视图 我使用 MainActivity 的 onPageSelected 更新此文本视图 它更新位置 gt 0 的文本视图 但起始页 位置 0 在启动时不会更新 当我向前滑动然后
  • 屏幕关闭时接近传感器不起作用?

    Hy 我有一个与接近传感器相关的问题 当我将手指放在上面时 我想关闭屏幕 当我拿开手指时 我想打开屏幕 我成功地完成了关闭部分 但是当我将手指从传感器上移开时 它似乎没有执行 onSensorChanged 方法 这是它的代码 public
  • Android 中无网络、断线的情况如何处理?

    我有一个应用程序需要连接到 Internet 才能执行某些操作 但当没有可用的 Internet 时 它会崩溃 我读到 如果没有互联网 我需要使用 try catch 括号 我尝试使用它 正如您在 AsyncTask 中看到的那样 但它不起
  • 如何在循环中正确释放jstring?

    我的应用程序需要使用jni 逻辑如下 void myJniFunc JNIEnv env jclass clazz jobjectArray items int count 10 struct MyObj myObjArray struct
  • 如何在 AsyncTask 的 postExecute 方法中获取 Map 的结果?

    如何在AsyncTask的postExecute方法中获取Map的结果 我无法在结果中获取结果 Override protected void onPostExecute Map
  • 如何像 git-archive 一样归档 AOSP 存储库?

    我使用这个命令来归档 git 源代码 git archive format tgz o myproj 20180402 tgz prefix myproj master 是否有相同 相似的方法来归档 AOSP 存储库分支或标签 怎么做 任何
  • 通过使用 Intents 使用预装的 Google 地图而不是自己的 Activity?

    我只是想知道是否可以将地理坐标传递给谷歌地图应用程序之二意图或类似的东西 我自己编写了一个用于显示路线 坐标等的应用程序 但是让谷歌地图本身显示这些不是更优雅吗 我不知道这是否可能 但也许你们中的一个人可以回答这个问题 如果这是可能的 是否
  • 不同应用的 Admob 广告单元 ID 相同吗?

    Context 我们正在努力整合admob在我们的应用程序中 我们有 25 个应用程序 主要是动态壁纸 当我们在里面创建广告单元ID时admob 我们提供应用程序名称作为 Playstore 中我们自己的应用程序包名称之一 我们有两个活动
  • 当互联网连接丢失时,不间断地读取输入流

    我使用异步任务来下载文件 它正常工作 直到我关闭我的 Android 的 wifi 连接 没有其他互联网连接 下载对话框仍然存在并且没有任何变化 当我检查日志时 我发现输入流的函数 read 不停顿 那么如何检查这个案例呢 这是我的代码 U
  • 会话“app”:安装 APK 时出错

    尝试按照说明在真实设备上安装应用程序 http developer android com tools device html http developer android com tools device html 最后 Android
  • LibGDX - 着色器适用于桌面但不适用于 Android

    我编写了一个简单的程序 可以在 3D 环境中渲染球体 并根据球体周围的四个光源为其着色 当我在桌面上运行该程序时 它工作得很好 但在 Android 设备上 球体只是纯色的 下面是一些图片来说明我正在谈论的内容 gt Desktop gt
  • 纹理不适用于网格 - OpenGL

    我正在使用 OpenGL Es 我已成功加载 obj 文件 网格 并且显示良好 但当我应用纹理时 它不显示 我添加了下面的代码 public void draw GL10 gl bind the previously generated t
  • 在Fragment中第一次调用时SharedPreferences为空

    我有一个示例 Android 应用程序 根据位置 邮政编码 和设置 SharedPreference 中设置的温度单位 该应用程序显示 7 天的天气 当应用程序第一次获取温度并检查 SharedPreference 中设置的温度单位时 它似
  • 在android中重叠屏幕

    在下面的布局中 我有一个名为扫描设备的文本视图 其中显示设备名称 但我的设备列表显示在屏幕上方 任何人都可以帮助我如何滚动视图应该在设备列表内 滚动屏幕时 它显示设备列表 但它显示在屏幕上方 想要显示在屏幕内

随机推荐

  • Nlog目标数据库在运行时设置连接信息

    使用 Nlog 和数据库目标 有没有办法在运行时设置连接信息 我记得我的一些同事也做过类似的事情 他找到了这样的答案 http nlog forum 1685105 n2 nabble com DDL for Database Table
  • 溢出:隐藏不适用于正方向的平移

    我最近遇到了一件奇怪的事情overflow hidden 我将它设置为一个元素 然后我想将其中的元素转换为translate 当它向负方向平移时 它将被隐藏 但如果我向正方向平移 它就不会被隐藏 在桌面浏览器中 它并没有真正显示出来 但您可
  • sp_executesql 与 'IN' 语句

    我试图使用 sp executesql 来防止 SQL 2005 中的 SQL 注入 我有一个像这样的简单查询 SELECT from table WHERE RegionCode in X101 B202 但是 当我使用 sp execu
  • 函数后面的const如何优化程序?

    我见过一些这样的方法 void SomeClass someMethod const 这个 const 声明有什么作用 它如何帮助优化程序 Edit 我看到这个问题的第一部分之前已经被问过 BUT 它仍然没有回答第二部分 这将如何优化程序
  • 可编辑文本字段的 UITableView 列表

    我知道这可能不符合 Apple 的 iPhone 人机界面指南 但我想摆脱一级推送视图并拥有可编辑文本字段的列表 此外 我希望当视图出现时键盘从一开始就出现在屏幕上 问题是 当我有超过三个这样的字段时 弹出键盘将覆盖下面的字段 用户无法向下
  • 如果 @Produces 注释缺失,球衣服务会返回什么?

    我开始学习开发安全的网络服务 正如我注意到的 大多数示例都使用以下注释 Consumes 定义输入参数的格式 Produces 定义输出参数的格式 但在实际代码中我看到的方法如下所示 POST Consumes MediaType APPL
  • Chrome扩展,在后台脚本中播放声音

    我想从 Chrome 扩展程序播放声音 但我读到内容脚本无法播放声音 所以我把这段代码放在我的后台脚本中 var audio new Audio alert ogg audio play 但还是没有声音 从 generated backgr
  • 将 ASP.NET 会员资格提供程序与现有用户数据库结合使用

    我目前正在 Net 中重写整个网站 当前网站是用foxpro编写的 并使用自定义逻辑 验证规则和Sql服务器表来存储和验证用户 我想使用会员提供程序 但我有一个主要问题 我不知道如何克服 新站点和旧站点都必须共享用户和凭据 用户必须能够在过
  • 没有匹配的构造函数来初始化“std::thread”

    我一直在研究一个相当简单的设施 并发for循环构造 它采用输入元素列表 输出向量和从输入元素计算输出元素的函数 我有这个片段无法编译 template
  • scikit-learn 中出现“ValueError:无法将字符串转换为浮点数”错误

    我正在运行以下脚本 import numpy as np import matplotlib pyplot as plt import pandas as pd from sklearn preprocessing import OneHo
  • 自动下载Gradle项目中的源

    在 Maven 项目中 有一个选项可以自动下载所有库的源代码 和 javadoc 对于 Gradle 项目 我没有找到任何选项 只需打开一个类并单击 在互联网中搜索 如果您有很多库 这会非常烦人 有没有办法自动附加来自互联网的源 maven
  • c++03:std::map 中内置类型的默认构造函数

    我一直以为下面的代码 std map
  • spring-boot:repackage 和 mvn package 之间的区别

    在阅读了 Spring 文档和网络上的其他一些文章后 我仍然很困惑 Spring Boot Maven 插件之间有什么区别spring boot 重新打包和一个常规的MVN包 我认为 mvn package 创建了一个包含所有依赖项的 ja
  • 使用 shell 脚本删除服务器中的文件

    对所有文件执行 wget 后如何删除服务器中的文件 我知道当您通过 ftp 连接到服务器时 删除命令可以工作 但我无法在运行 shell 脚本时使用该命令 以下是我的脚本 请告诉我其中有什么问题 bin bash filelist ls 2
  • 如何使用 mongoimport 导入 json 文件

    我正在尝试使用导入 json 文件mongoimport使用此命令行 mongoimport db posts collection rows file post history json 但它返回此错误 connected to loca
  • 在同一查询中使用 DISTINCT 和 TOP

    我想用DISTINCT and TOP在同一个查询中 我试过 SELECT DISTINCT TOP 10 FROM TableA 但我还有一个副本personID 所以我想这样做 SELECT DISTINCT personID TOP
  • UIPickerView 最佳实践?

    一个简短的问题 在注册过程中 我想要求用户从值列表中选择一个值 使用视图控制器添加所有文本字段并为值添加选择器视图是正确的方法吗 由于选择器视图在文本字段区域之间需要如此多的空间 我想知道在这种情况下的最佳实践是什么 到目前为止 这是我的代
  • 使用可选的非默认参数以编程方式创建 R 函数

    继从如何以编程方式创建 R 函数 https stackoverflow com questions 12982528 how to create an r function programmatically 我想从它们的组件构建 R 函数
  • 响应式图像如何与“尺寸”中提供的长度“em”一起使用?

    浏览器如何理解em在响应式图像中使用时的单位 img alt A giraffe src giraffe jpg 这是有效的 并且我没有在浏览器控制台中看到警告 但如果图像预加载器的全部目的是获取图像beforeCSS被下载并解析 浏览器用
  • android BluetoothChat 使用来自另一个类的发送接收方法

    您好 我使用 BluetoothChat 示例来与 arduino 进行通信 到目前为止 一切正常 现在我想访问 sendMessage 方法 以便能够不从主类发送数据 而是从我创建的另一个类发送数据 这是BluetoothChat jav