如何使用android中的bundle将活动之间的数据传递给片段

时间:2012-06-09 12:02:21

标签: android android-fragments

我可以将值存储在一个变量中。现在我想将该变量传递给片段 使用下面的代码,我可以加载片段:

public class AndroidListFragmentActivity extends Activity {
    Fragment2 f2;
    public static String itemname;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.apetiserfragement);
        itemname=getIntent().getStringExtra("itemname");
        Bundle args=new Bundle();
        args.putString("itemname", itemname);
        f2=new Fragment2();
        f2.setArguments(args);
    }
} /* (Here I load fragment using xml page) itemname */

输出分为2个窗口,一个用于扩展用于listfragment(用于listview),另一个用于片段。

Fragment2.xml

public class Fragment2 extends Fragment {
    String itemname;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        System.out.println(getArguments().getString("itemname"));

        return inflater.inflate(R.layout.fragment2, container, false);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
}

此类itemname中的AndroidListFragmentActivity我想通过Fragment2.class ..请帮帮我

2 个答案:

答案 0 :(得分:3)

如果两个片段都在其他活动上,则可以使用意图

如果在同一活动上,则可以对该特定活动进行操作

,如此link

请参阅类TitlesFragment的onListItemClick

**
     * Helper function to show the details of a selected item, either by
     * displaying a fragment in-place in the current UI, or starting a
     * whole new activity in which it is displayed.
     */
    void showDetails(int index) {
        mCurCheckPosition = index;

        if (mDualPane) {//<---------------------f on same activity then can do operation on that particular fragment
            // We can display everything in-place with fragments, so update
            // the list to highlight the selected item and show the data.
            getListView().setItemChecked(index, true);

            // Check what fragment is currently shown, replace if needed.
            DetailsFragment details = (DetailsFragment) //<------------------------see use getFragmentManager
                    getFragmentManager().findFragmentById(R.id.details);
            if (details == null || details.getShownIndex() != index) {
                // Make new fragment to show this selection.
                details = DetailsFragment.newInstance(index);

                // Execute a transaction, replacing any existing fragment
                // with this one inside the frame.
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.replace(R.id.details, details);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.commit();
            }

        } else { //<----------If both fragment are on other activity then can use intent 
            // Otherwise we need to launch a new activity to display
            // the dialog fragment with selected text.
            Intent intent = new Intent();
            intent.setClass(getActivity(), DetailsActivity.class);
            intent.putExtra("index", index);
            startActivity(intent);
        }

答案 1 :(得分:0)