我是Android开发的新手,我最近开始创建新的应用程序。
请考虑您的应用程序具有2个活动:MainActivity & TourneeFlowActivity
。另外,您有3个片段(在示例中,我将其称为StartTourneeFragment, ValidateTourneeFragment and EndingTourneeFragment
)。
我已经实现了Room and Repository模式,用于检索本地和远程数据。另外,我已经实现了ViewModels,以使用观察者刷新和管理UI数据(LiveData)。
在TourneeFlowActivity内,我有一个fragmentNavigationImplementation(对象类),用于我的片段导航流程(例如:在活动中使用回调侦听器,从StartTourneeFragment切换到ValidateTourneeFragment)。
目前,仅在捕获到的用户事件(例如单击按钮Next
或Previous
)上调用片段导航。
是否可以在对象属性更改时使用观察者来触发类似回调的操作,该回调可以动态更改片段?
代码示例不是我要做的,而是用于说明我想执行哪种机制...
我希望我对此很清楚。
public class TourneeFlowActivity extends Activity {
private FragmentNavigationImpl fragmentNavigation;
private BordereauViewModel bordereauViewModel;
@Override
public void onCreate() {
/// Some initializations
this.bordereau = ViewModelProviders.of(this).get(BordereauViewModel.class);
}
@Override
protected onActivityCreated(){
this.bordereauViewModel.getCurrentBorderau().observe(this, new Observer<Bordereau>{
@Override
public onChanged(@Nullable Bordereau bordereau) {
// Here my value has been changed so I would start a new fragment dynamically
if(bordereau != null && bordereau.getStep() == MyEnum.STEP_TO_ENDING) {
if(fragmentNavigation.getCurrentFragment()
instanceof ValidateTourneeFragment)
{
EndingFragment fragment = new EndingFragment();
fragmentNavigation.nextFragment(fragment);
}
}
}
});
}
}