我需要一些建議或指導如何解決這個問題。我的應用有3個基於3個片段類和一個MainActivity的選項卡。當我啓動應用程序時,在MainActivity中建立藍牙連接。因爲這個原因,我得到了建立連接的線程並開始監聽數據,這些數據也保存在緩衝隊列中的線程中。其他一些班級解析這些數據並將其放入公共班級,這些數據可從任何地方訪問。標籤片段中的事件?
所以我的問題是:第一個選項卡被稱爲INFO選項卡,並從信息片段或MainActivity我需要BT連接建立後立即發送BT信息請求。但我不能在info fragment中的onCreateView方法上做到這一點,因爲連接需要幾秒鐘才能獲得establisehd,所以它會崩潰。我必須指出已建立的連接變量布爾deviceConnected,它在設備連接時設置爲true。因此,我認爲我需要一些事件,它將測試變量deviceConnected,當它將成爲true時,它將發送信息請求(通過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;
}
}
這裏是我的MainActivity的部分:
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收作方法初探會被解僱?那麼從那裏我可以通過藍牙發送信息請求?感謝幫助!
你好,有點推動時間提供一個完整的答案今天上午,但你的想法是轟轟烈烈的使用事件。這是一個迷你指南; http://stackoverflow.com/a/10608083/1348379 – OceanLife 2013-05-08 08:47:00
是的,這是我所需要的,我編輯我的帖子並添加一個代碼,因爲我不完全理解它,並且如果你幫助我會很高興。謝謝! – anze87 2013-05-08 12:40:16