将活动数据动态发送到片段

时间:2015-03-09 03:08:44

标签: android android-fragments

正如标题所说,我如何将活动数据发送到片段动态

例如,每当我在触发事件时更改活动中的值时,我必须将此值传递给片段,然后片段将根据此值进行一些更改。

请注意,它是动态的,而不是:

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;
    }

初始化片段时会出现这种情况,不符合要求

请告诉我如何处理它?

由于

6 个答案:

答案 0 :(得分:1)

如果向VideoFragment类添加方法,可以直接调用fragment.methodName(Param param);创建片段后。

答案 1 :(得分:0)

  1. setNewData(newData)

    中添加VideoFragment之类的方法
    public void setNewData(newData)
    {
    
       //update fragment based on 'new Data'
    }
    
  2. 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