Я читаю данные с микроконтроллера из последовательного порта USB.Замена фрагментов динамически не на нажатие кнопки или изменение ориентации
Основываясь на данных, которые я получаю, я хочу заменить фрагменты.
Когда я пытаюсь выполнить мой код ниже, нажмите кнопку, чтобы фрагмент был заменен отлично. Но когда я пытаюсь заменить фрагмент в некоторых других условиях, например, строки соответствуют, то он не работает.
Это также не дает никаких ошибок. Он просто перезапускает приложение.
Я использую два перца и первый RinseFragment.
Добавлен фрагмент первого экрана активности. в строке соответствия RinseFragment должен заменить фрагмент первого экрана.
См. Мой код ниже.
public class ProcessActivity extends FragmentActivity {
public Physicaloid phy;
TextView status;
Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_process);
phy = new Physicaloid(this);
openDevice();
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, filter);
status = (TextView)findViewById(R.id.status);
FirstScreen fs = new FirstScreen();
getFragmentManager().beginTransaction().add(R.id.fragment_container, fs).commit();
}
private void openDevice() {
if (!phy.isOpened()) {
if (phy.open()) { // default 9600bps
phy.addReadListener(new ReadLisener() {
String readStr;
@Override
public void onRead(int size) {
byte[] buf = new byte[size];
phy.read(buf, size);
try {
readStr = new String(buf, "UTF-8");
modeselector(readStr);
finish();
} catch (UnsupportedEncodingException e) {
}
}
});
}
}
}
public void modeselector(String s){
if(s.equals("R_A")){
RinseFragment rFragment = new RinseFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, rFragment);
transaction.addToBackStack(null);
transaction.commit();
}
if(s.equals("R_S")){
tvAppend(status,"RINSING . . .");
}
else
{
}
}
BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
closeDevice();
}
}
};
private void closeDevice() {
if(phy.close()) {
phy.clearReadListener();
}
}
Сейчас моя основная деятельность XML-файл
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ProcessActivity" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="#10000000" >
<Button
android:id="@+id/rinse"
android:layout_width="175dp"
android:layout_height="60dp"
android:text="RINSE"
android:textSize="20sp"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:shadowColor="#000000"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="0"
android:background="#53CF29"
android:onClick="onrinse"/>
<Button
android:id="@+id/dprep"
android:layout_width="175dp"
android:layout_height="60dp"
android:textSize="20sp"
android:text="PREPARATION"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:shadowColor="#000000"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="0"
/>
<Button
android:id="@+id/dialysis"
android:layout_width="175dp"
android:layout_height="60dp"
android:textSize="20sp"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:text="DIALYSIS"
android:shadowColor="#000000"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="0"
/>
<Button
android:id="@+id/disinfect"
android:layout_width="175dp"
android:layout_height="60dp"
android:textSize="20sp"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:text="DISINFECT"
android:shadowColor="#000000"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="0"
/>
<AnalogClock
android:id="@+id/analogClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="200dp"/>
</LinearLayout>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_below="@id/linearLayout1"
android:layout_above="@+id/statusbar"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
>
</FrameLayout>
<LinearLayout
android:id="@+id/statusbar"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:layout_alignLeft="@+id/linearLayout1"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/linearLayout1"
android:background="#30000000" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="10dp"
android:text="STATUS : "
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CALIBRATION FINISHED"
android:layout_marginTop="16dp"
android:layout_marginLeft="20dp"
android:textSize="20sp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Теперь мой фрагмент файлов оба же, без содержимого, пустой XML-файлов.
FirstScreen.java
public class FirstScreen extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.firstscreen, container,false);
}
}
Чтение с устройства не является проблемой, оно считывает правильные данные. Это я уверен. Я проверил его, открыв новую активность, а не заменяя фрагмент. Это сработало. Также моя проблема в том, что я не могу отлаживать и запускать одновременно. Я подключаю свой планшет к микроконтроллеру через otg к USB-кабелю. –
Я также видел, что он заменяет фрагмент, а затем закрывается без ошибок. Мой фрагмент xml - пустой, содержащий только один относительный макет. –