我对片段彼此更新值有疑问。
我有一个名为UserFragment
的片段,另一个名为CarsFragment
。 UserFragment获取用户数据,carFragment为用户拥有多辆汽车。然后我需要保存这个。
首先,在userFragment中,我将拥有用户详细信息。然后,在我想保存详细信息之前,我需要知道在保存用户数据之前是否已填充/提供汽车详细信息。一旦提供,我可以保存它。
public class UserFragemnt extends Fragment {
private EditText mUserName;
private EditText mUserOccupation;
private String [] muserCars = null;
...//onCreate
mUserName= (EditText) view.findViewById(R.id.UserName)
mUserOccupation= (EditText) view.findViewById(R.id.UserOccupation)
if (userCar != null){ //so here i want to be sure the data is set by the carFragment
//call saveUserdata()
}
//this function gets called by the main activity
public void getUserCarsString [] userCars){
muserCars = userCars;
}
}
所以问题是,carFrament获取/设置数据的最佳方法是什么,所以当我去保存它时,我有数据?因此,在这个问题中需要注意的一点是,userFragment需要在保存之前等待数据。
我已阅读过有关接口的信息,然后在主要活动中对其进行定义。我这样做是通过条件检查来查看汽车细节是否更新。我不认为这是最好的方式。我按照这个例子:http://developer.android.com/training/basics/fragments/communicating.html
还简要介绍了绑定数据变量:http://developer.android.com/tools/data-binding/guide.html
由于
答案 0 :(得分:0)
这不是您问题的答案,但我们假设您实现了片段之间的通信。你真的希望你的碎片彼此依赖吗?我不知道您的应用程序的确切用户体验,但我更希望每个片段存储自己的数据和其他片段(如果他们需要查询此数据)将加载此数据并依赖它。这种方式片段并不关心它依赖的数据是如何填充的,如果你需要删除或添加更多片段,你将有最小的改变(你不会保持特定片段之间的通信)。
答案 1 :(得分:0)
将片段附加到活动时,请确保为它们分配自己的唯一标记。
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, new CarsFragment(), "CARS")
.commit();
一旦你拥有它们,你可以使用以下方法从另一个片段中引用一个片段:
CarsFragment cars = (CarsFragment) getFragmentManager().findFragmentByTag("CARS");
您现在可以在CarsFragment
中公开一些其他方法,这些方法会在UserFragment
内返回您需要的任何信息,例如getSelectedUserCar()
。您可以稍后使用该方法的结果来决定是否要继续保存用户的数据。