随着活动,我曾经这样做:
在活动1:
Intent i = new Intent(getApplicationContext(), MyFragmentActivity.class);
i.putExtra("name", items.get(arg2));
i.putExtra("category", Category);
startActivity(i);
在活动2:
Item = getIntent().getExtras().getString("name");
你如何做到这一点使用片段? 我使用兼容性库V4也。
它是否在FragmentActivity去? 或实际片段? 且该方法它进去吗? 的onCreate? onCreateView? 另一个?
我可以看到示例代码吗?
编辑:值得注意的是我试图保持活动1作为活性(或实际上ListActivity点击时我在哪里经过列表项的意图),然后传递到一组标签片段的(通过一个片段的活性)和余需要任一选项卡能够得到的花絮。 (我希望这是可能的吗?)
我倾向于做,我相信这是谷歌旨在让开发者做太多,是仍然可以从临时演员Intent
中的Activity
,然后通过参数实例他们通过任何额外的数据片段。
实际上,有一个例子就说明了这一概念的Android开发博客,你会在几个API演示中看到这一点。 虽然该具体实例中,给出了API 3.0+片段,相同的流时使用适用FragmentActivity
和Fragment
从支持库。
你先检索意图演员像往常一样在你的活动,并把它们作为参数传递给片段:
public static class DetailsActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// (omitted some other stuff)
if (savedInstanceState == null) {
// During initial setup, plug in the details fragment.
DetailsFragment details = new DetailsFragment();
details.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(
android.R.id.content, details).commit();
}
}
}
在直接调用构造函数代替,它可能更容易使用该插头的参数到你的片段的静态方法。 这种方法通常被称为newInstance
在由谷歌给出的例子 。 这里实际上是一个newInstance
在方法DetailsFragment
,所以我不能确定为什么它没有在上面的代码片段中使用...
不管怎么说,在创建片段设置为参数中的所有演员,将可通过调用getArguments()
由于这将返回一个Bundle
,它的使用是类似于一个临时演员的Activity
。
public static class DetailsFragment extends Fragment {
/**
* Create a new instance of DetailsFragment, initialized to
* show the text at 'index'.
*/
public static DetailsFragment newInstance(int index) {
DetailsFragment f = new DetailsFragment();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
public int getShownIndex() {
return getArguments().getInt("index", 0);
}
// (other stuff omitted)
}
你仍然可以使用
String Item = getIntent().getExtras().getString("name");
在fragment
中,您只需要调用getActivity()
第一:
String Item = getActivity().getIntent().getExtras().getString("name");
这样可以节省你不必编写一些代码。