1

我有一个包含两个片段的活动。我想在两个片段之间传递数据(一个 ArrayAdapter 和一个 ArrayList)。Fragment 1 中的用户操作修改了这两种数据类型,然后需要将其传递给 Fragment 2。类似地,Fragment 2 中的用户操作也修改了这两种数据类型,然后需要将其传递回 Fragment 1。

你能指导一下最优雅的方法吗?我一直在研究parcelable和interface。因为,我对 Java(更不用说 android)没有太多经验,所以我无法辨别两种方法的局限性。

4

2 回答 2

0

我建议在每个片段中保留对您的数据对象的引用(我相信您是这样)并执行以下操作:

public void onResume()
{
    mDataObject = getFragmentManager.getFragmentByTag("Fragment1").getDataObject1();
    super.onResume();
}

您可以在 Frag 1 和 Frag 2 中运行它,它应该会更新模型。如果您有子对象,则需要比较它们并确定子对象在类似这样的函数中是否不同。

public void determineIfDifferent(DataObject mData1) 
{
    Field mData1Fields[] = mData1.getClass().getFields();
    Field mData2Fields[] = mData2.getClass().getFields();

    for (int i = 0; i < mData1Fields.length; i++)
    {           
        try 
        {
            if (mDataFields[i].get(mData) != null && tempFields[i].get(PS)!= null)
            {
                String mDataValue =  mDataFields[i].get(mData).toString().trim();
                String tempValue =  tempFields[i].get(PS).toString().trim();

                if (!mDataValue.equals(tempValue))
                {   
                    differenceList.add(tempValue);
                }
            }
        }
        catch (IllegalArgumentException e) 
        {
            Logger.logStackTrace(getClass().getSimpleName(), e);
        }
        catch (IllegalAccessException e) 
        {
            Logger.logStackTrace(getClass().getSimpleName(), e);
        }
    }
}

如果类型不是字符串,这显然可以修改 - 这正是我手头的

于 2012-12-18T22:51:33.173 回答
-1

您可以将它们放入 Intent.putExtra() 中,反之亦然

于 2012-12-18T22:41:55.033 回答