正如标题所说,我如何将活动数据发送到片段动态?
例如,每当我在触发事件时更改活动中的值时,我必须将此值传递给片段,然后片段将根据此值进行一些更改。
请注意,它是动态的,而不是:
public static VideoFragment instance(String videourl, String bannerurl) {
VideoFragment fragment = new VideoFragment();
Bundle bundle = new Bundle();
bundle.putString("videourl", videourl);
bundle.putString("bannerurl", bannerurl);
fragment.setArguments(bundle);
return fragment;
}
初始化片段时会出现这种情况,不符合要求。
请告诉我如何处理它?
由于
答案 0 :(得分:1)
如果向VideoFragment类添加方法,可以直接调用fragment.methodName(Param param);创建片段后。
答案 1 :(得分:0)
在setNewData(newData)
VideoFragment
之类的方法
public void setNewData(newData)
{
//update fragment based on 'new Data'
}
在Activity
中,找出VideoFragmeny
并按以下方式发送新数据:
VideoFragment vFrag = (VideoFragment)getFragmentManager().getFragmentById(R.id.fragment_id);
vFrag.setNewData(newData);
如果您在Activity中使用suppot库,那么请使用
getSupportFragmentManager
因此。如果您在何时使用Tag
创建VideoFragment
,然后使用findFragmentByTag
代替
上面有findFragmentById
。
答案 2 :(得分:0)
你应该将你的属性放在你的类中,并在其中创建一个setter(在公共场合),以便能够修改你的属性。
public class VideoFragment
{
private String _videoUrl; // video url
public void setVideoUrl(String url) // your setter
{
_videoUrl = url;
}
public static VideoFragment instance(String videourl, String bannerurl) {
VideoFragment fragment = new VideoFragment();
fragment.setVideoUrl(videourl); //set the value of your video url into your fragment
// do the same for your banner
return fragment;
}
}
PS:永远不要将任何参数添加到片段的构造函数中,您可以避免一些随机崩溃。 Android不推荐它。
希望它有所帮助。
答案 3 :(得分:0)
非常容易地将数据从活动发送到任何片段。
您唯一要做的就是在framents类中添加一个公共方法:
public void Response(String data){
Log.i("data", data);
}
然后,从活动类创建一个实例:
FragmentClass obj=(FragmentClass) getSupportFragmentManager().findFragmentById
(R.id.main_fragment);
obj.Response("This is a string");
答案 4 :(得分:-1)
只是让你的数据是静态的。然后调用YourActivity.YourData,它是动态的吗?
答案 5 :(得分:-2)
我不明白你的意思动态。但是你要访问一些来自Activity的变量,你可以创建一个方法或者只是通过使用以下方法访问变量
((Your Activity Name) getActivity()).your method
或
((Your Activity Name) getActivity()).your variable