Android 片段正在等待另一个片段的数据

Android Fragment waiting on another Fragment's data

我对片段相互更新值有疑问。

我有一个名为 UserFragment 的片段和另一个名为 CarsFragment 的片段。 UserFragment 获取用户数据,carFragment 获取用户拥有的多辆汽车。然后我需要保存这个。

所以,首先,在 userFragment 中,我将包含用户详细信息。然后,在我要保存详细信息之前,我需要知道汽车详细信息是否已经populated/provided,然后再将用户数据作为一个整体保存。一旦提供,我可以保存它。

   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 获取 me/set 数据的最佳方式是什么,这样当我去保存它时,我就有了数据?所以这道题需要注意的一点是,userFragment在保存之前需要等待数据。

我读过有一个接口,然后在主 activity 中定义它。我这样做是为了有条件地检查汽车的详细信息是否已更新。我认为这不是最好的方法。我按照这个例子:http://developer.android.com/training/basics/fragments/communicating.html

还简要阅读了绑定数据变量:http://developer.android.com/tools/data-binding/guide.html

谢谢

这不是您问题的确切答案,但假设您实现了片段之间的通信。你真的希望你的片段相互依赖吗?我不知道您的应用程序的确切用户体验,但我希望每个片段都存储自己的数据,而其他片段(如果他们需要查询此数据)将加载此数据并依赖它。这样 fragment 就不会关心它所依赖的数据是如何填充的,如果您需要删除或添加更多 fragments,您将有最小的变化(您将不会保持特定 fragments 之间的通信)。

将片段附加到 Activity 时,请确保为它们分配自己的唯一标签。

getSupportFragmentManager()
  .beginTransaction()
  .add(R.id.content, new CarsFragment(), "CARS")
  .commit();

获得它们后,您可以使用以下方式从另一个片段引用一个片段:

CarsFragment cars = (CarsFragment) getFragmentManager().findFragmentByTag("CARS");

您现在可以在您的 CarsFragment 中公开一些额外的方法,这些方法将 return 您在 UserFragment 中需要的任何信息 - 例如 getSelectedUserCar()。您可以稍后使用该方法的结果来决定是否要继续保存用户数据。