我構建了一個應用程序,該應用程序由Activity和Fragments組成,它們位於Activity中。 我根據應用程序流來替換碎片,但似乎隨着更多操作添加到應用程序中,跟蹤代碼中的應用程序流變得更加困難。如何將結構添加到構建在碎片上的UI上?
假設這樣的:
public class MainActivity extends Activity{
private enum AppState {
WAIT_SIGN_IN, SCAN_PERSONAL_ID, CONFIRM_ORDER, PICK_ITEM, NAVIGATE_TO_ITEM
}
private AppState currentState = AppState.WAIT_SIGN_IN;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setWaitSignInContent();
}
//Hardware key is pressed
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (currentState) {
case WAIT_SIGN_IN:
setSignInContent();
currentState = AppState.SCAN_PERSONAL_ID;
break;
case PICK_ITEM:
handlePickItem();
default:
break;
}
return true;
}
//Callback from barcode scanner
@Override
public void onCodeScanned(String code) {
switch (currentState) {
case SCAN_PERSONAL_ID:
if (checkPersonalId(code)) {
setSignInSuccessContent();
}
break;
default:
break;
}
}
private void setSignInSuccessContent() {
Fragment fragment = new ImageFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_primary, fragment).commit();
}
private void setSignInContent() {
Fragment fragment = new ScannerFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_primary, fragment).commit();
}
private void setWaitSignInContent() {
Fragment fragment = new ImageFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_primary, fragment).commit();
}
}
}
正如你所看到的,這種基於狀態的流量是很難效仿。有關如何改善這一點的任何建議?
問題是:在我的Activity中有多個地方的活動狀態發生了變化。它具有透明的應用程序流。 –
然後提到應用程序流程 –