如何为每个以编程方式生成的片段 get/set 数据
How to get/set data for each programmatically generated fragment
我对 android 中以编程方式生成的片段有疑问。
现在我正在创建有助于在健身房训练的应用程序。我想创建类似 "live training" 的东西 - 这意味着用户将进行一些练习,每个练习都会举起重量等。
我在想每个练习都是一个片段(并且有自己的数据),但现在我考虑如何与父 activity 自动生成的片段进行通信,例如读取一些数据。
用户应该能够在练习之间切换(因此应该为每个练习保存任何系列和重量
直到锻炼完成),但现在我正在为此寻找最佳解决方案,但我被困住了:/。我以前从来没有做过这样的事情。
使用带有实时数据的模型视图视图模型架构来观察数据变化。
Architecture Components 为 UI 控制器提供 ViewModel 助手 class,负责为 UI 准备数据。 ViewModel 对象在配置更改期间自动保留,以便它们保存的数据可立即用于下一个 activity 或片段实例。
查看模型
public class SharedViewModel extends ViewModel {
private final MutableLiveData<Item> selected = new MutableLiveData<Item>();
public void select(Item item) {
selected.setValue(item);
}
public LiveData<Item> getSelected() {
return selected;
}
}
主片段
public class MasterFragment extends Fragment {
private SharedViewModel model;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
itemSelector.setOnClickListener(item -> {
model.select(item);
});
}
}
详情片段
public class DetailFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
model.getSelected().observe(this, item -> {
// Update the UI.
});
}
}
有关更多信息,请浏览 android MVVM 架构的开发人员文档
https://developer.android.com/topic/libraries/architecture/viewmodel
我对 android 中以编程方式生成的片段有疑问。 现在我正在创建有助于在健身房训练的应用程序。我想创建类似 "live training" 的东西 - 这意味着用户将进行一些练习,每个练习都会举起重量等。 我在想每个练习都是一个片段(并且有自己的数据),但现在我考虑如何与父 activity 自动生成的片段进行通信,例如读取一些数据。 用户应该能够在练习之间切换(因此应该为每个练习保存任何系列和重量 直到锻炼完成),但现在我正在为此寻找最佳解决方案,但我被困住了:/。我以前从来没有做过这样的事情。
使用带有实时数据的模型视图视图模型架构来观察数据变化。
Architecture Components 为 UI 控制器提供 ViewModel 助手 class,负责为 UI 准备数据。 ViewModel 对象在配置更改期间自动保留,以便它们保存的数据可立即用于下一个 activity 或片段实例。
查看模型
public class SharedViewModel extends ViewModel {
private final MutableLiveData<Item> selected = new MutableLiveData<Item>();
public void select(Item item) {
selected.setValue(item);
}
public LiveData<Item> getSelected() {
return selected;
}
}
主片段
public class MasterFragment extends Fragment {
private SharedViewModel model;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
itemSelector.setOnClickListener(item -> {
model.select(item);
});
}
}
详情片段
public class DetailFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
model.getSelected().observe(this, item -> {
// Update the UI.
});
}
}
有关更多信息,请浏览 android MVVM 架构的开发人员文档
https://developer.android.com/topic/libraries/architecture/viewmodel