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 - 如何将自定义对象传递给片段的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将自定义参数传递给 android 市场,以便我的应用在首次启动时收到它?