Android - 如何将自定义对象传递给片段

Posted

技术标签:

【中文标题】Android - 如何将自定义对象传递给片段【英文标题】:Android - How to pass a custom object to a fragment 【发布时间】:2015-11-07 23:09:57 【问题描述】:

数据库管理器代码

 public HouseHoldIncome getHoseHold(String id) 
    HouseHoldIncome listViewEditing = null;
    try 
        Dao<HouseHoldIncome, String> 
        householdIncomeDao =     dbHelper.getDaoHouseHoldIncome();
         listViewEditing= householdIncomeDao.queryForId(id);
     catch (SQLException e) 
        Logger.get().e(GreenAgriApp.getInstance(), e.getMessage());
        e.printStackTrace();
    
    return listViewEditing;


    Adapter class

  updatebutton=(Button)view.findViewById(R.id.Update);

  updatebutton.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 

        update((int) v.getTag());
    

    );


 public void update(int position)
 
   HouseHoldIncome houseHoldIncome=arrayList.get(position);
   DatabaseManager.getInstance(mcontext)
 .getHoseHold(String.valueOf(position));
   arrayList.add(position,houseHoldIncome);
   notifyDataSetChanged();
  

我是 android 新手,我想创建一个包含预先填充数据的更新视图,该数据具有一个表单。我想将自定义对象从更新方法传递给片段。我怎样才能做到这一点?

【问题讨论】:

您似乎没有将代码发布到您的 Fragment 或您需要传递到您的 Fragment 的对象中。我对您要完成的工作感到有些困惑。 【参考方案1】:

一种简单的方法是在您的 Fragment 上创建一个 public setter 方法,您可以使用该方法在其中设置数据。

片段

public class MyFragment extends Fragment 

    private CustomObject object;

    ...

    public void setCustomObject(CustomObject object)
        this.object = object;
    


使用数据创建片段

CustomObject object = new CustomObject();

MyFragment fragment = new MyFragment();
fragment.setCustomObject(object);

查看question 了解更多信息。

【讨论】:

【参考方案2】:

您应该使您的自定义对象类可序列化或可打包,这允许您通过片段的 getArguments() 方法将数据发送到片段。

    使您的类可序列化或可打包(首选 Parcelable,因为它更有效)。 创建一个包并使用 bundle.putParcelable() 将您的自定义对象放入包中。

3. 通过使用 fragment.setArguments(Bundle) 方法设置参数将数据传递给片段。

4.使用 getArguments() 方法从片段中访问您的自定义对象

【讨论】:

以上是关于Android - 如何将自定义对象传递给片段的主要内容,如果未能解决你的问题,请参考以下文章

在 Argument 中设置自定义数据类型

是否可以将自定义参数传递给 android 市场,以便我的应用在首次启动时收到它?

如何将自定义参数传递给事件处理程序

如何将自定义注释中的参数传递给库中的 WebSecurityConfigurer

如何将自定义凭据传递给 Spring Boot ldap

如何在 agora web 中将自定义对象传递给远程流