dam*_*uar 24 android android-fragments android-activity
我想将我的活动中的参数传递给嵌入到活动中的片段.片段静态嵌入xml布局中.我试着像这样调用setArgument():
setContentView(R.layout.detail_activity);
DetailFragment detailFragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.detailFragment);
detailFragment.setArguments(getIntent().getExtras());
Run Code Online (Sandbox Code Playgroud)
但是已经太晚了,因为必须在片段创建后立即调用setArguments.唯一的是我看到getArguments()和更改捆绑.有更好的方法吗?
Jay*_*yer 41
AFAIK,setArguments()当你在XML中嵌入片段时,你不能使用它.如果它很重要,那么最好动态添加片段.但是,如果您真的希望通过XML嵌入片段,则可以通过不同的方式传递该数据.
onCreate()方法之前设置它们至关重要,那么从activity的onAttachFragment()方法中进行设置.小智 5
你有两个选择
如果您只需要活动意图中的信息,那么将意图中的信息放入片段参数只会增加一个不需要的步骤.你可能只是保持简单和片段调用
Bundle data = getActivity().getIntent().getExtras();
Run Code Online (Sandbox Code Playgroud)如果您需要添加不在活动意图中的信息,那么在您的片段中创建一个无参数构造函数,如:
public DetailFragment() {
this.setArguments(new Bundle());
}
Run Code Online (Sandbox Code Playgroud)然后在您的活动中,您可以使用以下代码添加所需的任何参数:
DetailFragment frg = (DetailFragment) getFragmentManager().findFragmentById(R.id.detailFragment);
frg.getArguments().putBundle("key", data);
Run Code Online (Sandbox Code Playgroud)
这里的要点是使用现有的bundle对象,而不是在片段附加到活动后尝试调用setArguments().
| 归档时间: |
|
| 查看次数: |
25141 次 |
| 最近记录: |