Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用蓝牙接收的值更新视图寻呼机?_Android_Android Fragments_Bluetooth_Android Viewpager - Fatal编程技术网

Android 如何使用蓝牙接收的值更新视图寻呼机?

Android 如何使用蓝牙接收的值更新视图寻呼机?,android,android-fragments,bluetooth,android-viewpager,Android,Android Fragments,Bluetooth,Android Viewpager,我有一个带有一些片段的ViewPager。默认情况下,当活动开始时,我会启动蓝牙,并连接到已知设备。当蓝牙设备发送数据时,数据将显示在该片段的文本视图中。为此,我使用处理程序 问题是,如果切换到第二个选项卡/页面/片段,值仍显示在前一个片段中,因为线程仍在运行,处理程序仍在更新此TextView 每次在页面/片段之间切换时,我都可以取消并启动BluetoothConnectThread,但我认为应该有一个更有效的解决方案。 如果在某个时候我需要重新加载视图寻呼机,这也没有帮助 所以我的问题是:是

我有一个带有一些片段的
ViewPager
。默认情况下,当活动开始时,我会启动
蓝牙
,并连接到已知设备。当蓝牙设备发送数据时,数据将显示在该片段的文本视图中。为此,我使用
处理程序

问题是,如果切换到第二个选项卡/页面/片段,值仍显示在前一个片段中,因为线程仍在运行,
处理程序仍在更新此
TextView

每次在页面/片段之间切换时,我都可以取消并启动Bluetooth
ConnectThread
,但我认为应该有一个更有效的解决方案。 如果在某个时候我需要重新加载视图寻呼机,这也没有帮助

所以我的问题是:是否可能有某种东西(处理程序)来更新当前活动页面/片段的文本视图

我发现这个问题很相似,但它并没有帮助我找到答案

我的
处理程序
如下所示:

static class MyHandler extends Handler {
        private final WeakReference<MyFragment> mFragment;

        public MyHandler(MyFragment fragment) {
            mFragment = new WeakReference<>(fragment);
        }

        @Override
        public void handleMessage(Message msg) {
            MyFragment fragment = mFragment.get();
            if (fragment != null) {
                String tempValue = (String) msg.obj;
                if (tempValue != null && !tempValue.equals("")) {
                    try {
                          fragment.setValuesFromBluetooth(tempValue.trim());
                          // here i need something to update the current active fragment
                        }
                    } catch (Exception e) {
                        //log
                    }
                }
            }
        }
    }

private void setValuesFromBluetooth(String value) {
        tv1.setText(value);
}
静态类MyHandler扩展了Handler{
私人最终参考文件;
公共MyHandler(MyFragment片段){
mffragment=新的WeakReference(片段);
}
@凌驾
公共无效handleMessage(消息消息消息){
MyFragment fragment=mffragment.get();
if(片段!=null){
字符串tempValue=(字符串)msg.obj;
if(tempValue!=null&!tempValue.equals(“”){
试一试{
Bluetooth中的fragment.setvalues(tempValue.trim());
//这里我需要一些东西来更新当前的活动片段
}
}捕获(例外e){
//日志
}
}
}
}
}
来自蓝牙的私有无效设置值(字符串值){
tv1.setText(值);
}
编辑:我正在附上一张图片,说明我正在努力做/实现的事情