Я создаю приложение для печати электронных счетов для мобильных устройств Android.Я успешно подключил приложение и небольшой принтер Bluetooth POS.Я также могу распечатать счет через это.
Я использовал фрагменты для этого приложения и все фрагменты, генерируемые в результате основной деятельности.
Мой вопрос: если я изменю фрагмент и нажму кнопку печати, он спроситснова подключиться к принтеру.Мне нужно избегать этого процесса, потому что, как только пользователь нажал кнопку печати в предыдущем фрагменте (это работает, если пользователь печатает что-то с использованием этого фрагмента, в противном случае ему следует попросить соединиться с принтером), он / она уже подключен к принтеру.
Проблема возникает здесь, когда я ввожу новый фрагмент, затем этот фрагмент создает новый объект для обработчик , мне нужно поместить этот обработчик как singleton. Этот обработчик используется для подключения к принтеру через Bluetooth .Я попробовал несколько решений, но мне не удалось.Есть какой-либо способ сделать это.Пожалуйста, помогите мне найти лучшее решение этой проблемы.Заранее спасибо.
вот код - обработчик и фрагмент onCreateView,
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case BluetoothService.MESSAGE_STATE_CHANGE:
switch (msg.arg1) {
case BluetoothService.STATE_CONNECTED: //������
Toast.makeText(getContext(), "Connect successful",
Toast.LENGTH_SHORT).show();
isDeviceConnected = true;
// updateConnectBtn();
// btnClose.setEnabled(true);
// btnSendDraw.setEnabled(true);
Log.v("Pasindu", "Connected!");
break;
case BluetoothService.STATE_CONNECTING: //��������
Log.d("��������", "��������.....");
break;
case BluetoothService.STATE_LISTEN: //�������ӵĵ���
case BluetoothService.STATE_NONE:
Log.d("��������", "�ȴ�����.....");
break;
}
break;
case BluetoothService.MESSAGE_CONNECTION_LOST: //�����ѶϿ�����
Toast.makeText(getContext(), "Device connection was lost",
Toast.LENGTH_SHORT).show();
isDeviceConnected = false;
// btnClose.setEnabled(false);
// btnSendDraw.setEnabled(false);
break;
case BluetoothService.MESSAGE_UNABLE_CONNECT: //�������豸
Toast.makeText(getContext(), "Unable to connect device",
Toast.LENGTH_SHORT).show();
break;
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.data_fragment, container, false);
btn_proceed = (Button) view.findViewById(R.id.btn_proceed);
mService = new BluetoothService(getContext(), mHandler);
cmd = new byte[3];
isDeviceConnected = ((MainActivity)this.getActivity()).isDeviceConnected;
btn_proceed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
print();
}
});
return view;
}