The*_*ter 101 android android-intent android-fragments android-activity
通过活动,我曾经这样做:
在活动1中:
Intent i = new Intent(getApplicationContext(), MyFragmentActivity.class);
i.putExtra("name", items.get(arg2));
i.putExtra("category", Category);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
在活动2中:
Item = getIntent().getExtras().getString("name");
Run Code Online (Sandbox Code Playgroud)
你是如何使用Fragments做到这一点的?我也在使用兼容性库v4.
它是否属于FragmentActivity?还是实际的碎片?它采用哪种方法?的onCreate?onCreateView?另一个?
我可以看一下示例代码吗?
编辑:值得注意的是我试图将Activity 1保持为Activity(或者实际上是ListActivity,我点击时传递listitem的意图)然后传递给一组tabbed-fragments(通过Fragment Activity)和我需要任何一个标签才能获得额外的东西.(我希望这可能吗?)
mee*_*eee 168
你仍然可以使用
String Item = getIntent().getExtras().getString("name");
Run Code Online (Sandbox Code Playgroud)
在fragment,你只需getActivity()要先打电话:
String Item = getActivity().getIntent().getExtras().getString("name");
Run Code Online (Sandbox Code Playgroud)
这样可以节省您编写代码的麻烦.
MH.*_*MH. 108
我倾向于做的,并且我相信这也是谷歌打算让开发人员做的事情,就是仍然从a Intent中获取额外内容Activity,然后通过使用参数实例化它们将任何额外的数据传递给片段.
Android开发博客上有一个例子说明了这个概念,你也会在几个API演示中看到这个.虽然这个特定的例子是针对API 3.0+片段给出的,但是在使用FragmentActivity和Fragment来自支持库时也适用相同的流程.
您首先在活动中检索intent intent,并将它们作为参数传递给片段:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
而不是直接调用构造函数,使用静态方法可能更容易,该方法将参数插入到片段中.这种方法通常newInstance在Google给出的示例中调用.实际上有一种newInstance方法DetailsFragment,所以我不确定为什么它没有在上面的代码段中使用...
无论如何,在创建片段时作为参数提供的所有额外内容都可以通过调用获得getArguments().由于这返回a Bundle,它的用法类似于a 中的extras 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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136188 次 |
| 最近记录: |