如何将Bundle传递给片段

时间:2012-11-01 19:42:01

标签: android android-fragments

首先让我说,我希望在飓风桑迪之后,东海岸的每个人都可以。我很幸运,虽然我住在纽约市,但我从未失去权力。我的想法告诉那些不那么幸运的人。 现在我三天后回来工作了,我需要一些片段的帮助。我正在尝试将Bundle传递给Fragment并且它无法正常工作。我知道我的通用片段设置正确,因为如果我不尝试通过Bundle,它可以正常工作。所以这是我通过Bundle的活动:

public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            Intent choice = new Intent(getApplicationContext(), com.MyProject.project.MyList.class);
            Bundle dataBundle = new Bundle();
            String chosenValue = values[position];
            dataBundle.putString("Level",chosenValue);
            choice.putExtras(dataBundle);
            startActivity(choice);  }

现在这是我没有Bundle的活动。这很好用:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
        String[] values = new String[] { "Enterprise", "Star Trek", "Next Generation", "Deep Space 9", "Voyager"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

}

然而,当我尝试从Bundle获取信息时,它不起作用。这是我的代码:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle info = getArguments();


    String level = info.getString("level");
    String[] values = new String[] {level, level};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values);
    setListAdapter(adapter);


}

当我运行此选项并在我的Activity中点击我的选择时,应用程序就会挂起。 LogCat似乎没有给我很多关于此的信息。有没有人在这看到任何问题?

谢谢!

1 个答案:

答案 0 :(得分:5)

您需要在Fragment上设置参数。

在活动的onCreate中:

Fragmet myFragment = new MyFragment();
myFragment.setArguments( getIntent().getExtras() );