Java 选项卡片段中的事件?
我需要一些建议或指导如何解决这个问题。我的应用程序有3个标签,基于3个片段类和一个主活动。启动应用程序时,会在MainActivity中建立蓝牙连接。由于这个原因,我得到了建立连接并开始侦听输入数据的线程,这些数据也保存在缓冲队列中的线程中。其他一些类解析这些数据并将其放在公共类中,该类可以从任何地方访问 所以我的问题是:第一个标签叫做INFO标签,在建立BT连接后,我需要从INFO片段或MainActivity中立即发送BT INFO请求。但我不能在InfoFragment中的onCreateView方法上这样做,因为连接需要几秒钟才能获得establisehd,所以它会崩溃。我有一个用于指示已建立的连接变量boolean DeviceConnection,该变量在设备连接时设置为true 所以,我认为我需要一些事件,它将测试变量deviceConnected,当它为真时,它将发送信息请求(通过BT发送数据的方法从MainActivity调用)。我还需要一些事件,它将在解析数据可用时测试,以引用UI选项卡。求求你,救命!如果你不明白我在找什么,我可以给出代码或其他解释 这是片段选项卡的代码。当按下“按钮”时,我们从MainActivity调用方法来启动连接。我们也发送意向,但只发送消息“废话”。我如何判断,我正在等待连接的蓝牙Java 选项卡片段中的事件?,java,android,Java,Android,我需要一些建议或指导如何解决这个问题。我的应用程序有3个标签,基于3个片段类和一个主活动。启动应用程序时,会在MainActivity中建立蓝牙连接。由于这个原因,我得到了建立连接并开始侦听输入数据的线程,这些数据也保存在缓冲队列中的线程中。其他一些类解析这些数据并将其放在公共类中,该类可以从任何地方访问 所以我的问题是:第一个标签叫做INFO标签,在建立BT连接后,我需要从INFO片段或MainActivity中立即发送BT INFO请求。但我不能在InfoFragment中的onCreate
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连接。