Android Fragment正在等待另一个Fragment的数据

时间:2016-01-21 18:56:19

标签: android android-fragments android-fragmentactivity

我对片段彼此更新值有疑问。

我有一个名为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

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

一旦你拥有它们,你可以使用以下方法从另一个片段中引用一个片段:

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

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