Java 选项卡片段中的事件?

Java 选项卡片段中的事件?,java,android,Java,Android,我需要一些建议或指导如何解决这个问题。我的应用程序有3个标签,基于3个片段类和一个主活动。启动应用程序时,会在MainActivity中建立蓝牙连接。由于这个原因,我得到了建立连接并开始侦听输入数据的线程,这些数据也保存在缓冲队列中的线程中。其他一些类解析这些数据并将其放在公共类中,该类可以从任何地方访问 所以我的问题是:第一个标签叫做INFO标签,在建立BT连接后,我需要从INFO片段或MainActivity中立即发送BT INFO请求。但我不能在InfoFragment中的onCreate

我需要一些建议或指导如何解决这个问题。我的应用程序有3个标签,基于3个片段类和一个主活动。启动应用程序时,会在MainActivity中建立蓝牙连接。由于这个原因,我得到了建立连接并开始侦听输入数据的线程,这些数据也保存在缓冲队列中的线程中。其他一些类解析这些数据并将其放在公共类中,该类可以从任何地方访问

所以我的问题是:第一个标签叫做INFO标签,在建立BT连接后,我需要从INFO片段或MainActivity中立即发送BT INFO请求。但我不能在InfoFragment中的onCreateView方法上这样做,因为连接需要几秒钟才能获得establisehd,所以它会崩溃。我有一个用于指示已建立的连接变量boolean DeviceConnection,该变量在设备连接时设置为true

所以,我认为我需要一些事件,它将测试变量deviceConnected,当它为真时,它将发送信息请求(通过BT发送数据的方法从MainActivity调用)。我还需要一些事件,它将在解析数据可用时测试,以引用UI选项卡。求求你,救命!如果你不明白我在找什么,我可以给出代码或其他解释

这是片段选项卡的代码。当按下“按钮”时,我们从MainActivity调用方法来启动连接。我们也发送意向,但只发送消息“废话”。我如何判断,我正在等待连接的蓝牙

public class FragmentA extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View myFragmentView = inflater.inflate(R.layout.fragment_a, container, false);
        Button button = (Button) myFragmentView.findViewById(R.id.button1);

        //when button connect is clicked, call method from MainActivity
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //start bluetooth connection in MainActivity    
            ((MainActivity)getActivity()).startConnectionFromActivity();
            final Intent intent = new Intent();
            intent.setAction(android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED);
            getActivity().sendBroadcast(intent);               
            }
        });

        return myFragmentView;
    }

}
以下是我的主要活动部分:

 public class MainActivity extends Activity {
        private BroadcastReceiver mReceiver;

    @Override
        protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            IntentFilter intentFilter = new IntentFilter(
                    android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED);
            mReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {

                    //from there should I send request info??

                }
            };
            //registering our receiver
            this.registerReceiver(mReceiver, intentFilter);
        }

        @Override
        protected void onPause() {
            // TODO Auto-generated method stub
            super.onPause();
            //unregister our receiver
            this.unregisterReceiver(this.mReceiver);
        }
}

如果我理解正确,当这一切都设置好,当BT将建立,onReceive methd将被激发?这样我就可以通过蓝牙发送信息请求了?谢谢你的帮助

您可以检查设备是否与连接,如下所示:


为什么不实现一个自己的事件来通知您解析的结束?一个起点可以是这样的:

大家好,今天早上有点急着要提供完整的答案,但你们的想法是非常有用的。这是一本迷你指南;是的,这就是我需要的,我编辑我的帖子并添加代码,因为我不完全理解它,如果你能帮助我,我会非常高兴。谢谢我试图检查设备是否像本例中那样连接,但出现以下错误:05-09 08:07:25.085:E/AndroidRuntime(12506):java.lang.SecurityException:权限拒绝:不允许发送广播android.bluetooth.device.action.ACL_从pid=12506连接,uid=10212看起来您的清单中缺少一些权限。您添加了蓝牙和蓝牙管理吗?是的,我添加了此权限。我现在使用不同的解决方案,所以我不需要检查ACL\U连接。