1

2 つのフラグメントを含むアクティビティがあります。2 つのフラグメント間でデータ (ArrayAdapter と ArrayList) を渡したいと考えています。フラグメント 1 のユーザー操作は両方のデータ型を変更し、フラグメント 2 に渡す必要があります。同様に、フラグメント 2 のユーザー操作も 2 つのデータ型を変更し、フラグメント 1 に戻す必要があります。

最もエレガントな方法を教えてください。私はパーセルブルとインターフェースを調べてきました。私はJava(アンドロイドはもちろん)の経験があまりないため、2つのアプローチの制限を識別することができませんでした。

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 に答える