Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从活动到片段获取更新的数据?_Android_Fragment - Fatal编程技术网

Android 从活动到片段获取更新的数据?

Android 从活动到片段获取更新的数据?,android,fragment,Android,Fragment,我对android开发者来说是个新手,我通过bundle从活动中获取数据,但bundle数据是通过菜单选项更新的,但fragment没有获取更新的数据 //正在调用片段 FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction(); final Bundle bundle=new Bundle(); String sid=mStudent

我对android开发者来说是个新手,我通过bundle从活动中获取数据,但bundle数据是通过菜单选项更新的,但fragment没有获取更新的数据

//正在调用片段

        FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
        final Bundle bundle=new Bundle();
        String sid=mStudents.get(selectedno).getStudentId();
        bundle.putString("studentidbundle", sid);
        // Toast.makeText(this, ""+sid, Toast.LENGTH_SHORT).show();
        ProgressFrame progressFrame=new  ProgressFrame();
        progressFrame.setArguments(bundle);
        fragmentTransaction.addToBackStack("FrameTransaction");
        fragmentTransaction.detach(progressFrame);
        fragmentTransaction.attach(progressFrame);
        fragmentTransaction.replace(R.id.fraame1main, progressFrame);
        fragmentTransaction.commit();
//从活动到片段获取数据

        sid = getArguments().getString("studentidbundle");
你可以这样做

public static ProgressFrame getInstance(string id){
        ProgressFrame progressFrame=new  ProgressFrame();
        Bundle bundle=new Bundle();
        bundle.putString("studentidbundle", id);
        progressFrame.setArguments(bundle);
        return fragment ;
}
现在,您可以通过以下方式使用beginTransaction:

fragmentTransaction.replace(R.id.fraame1main, ProgressFrame.getInstance(sid));

在活动类中创建接口

  • 活动代码
在片段中实现该接口

  • 片段代码

也许这段代码会对您有所帮助。

显示您的代码您做了什么?
private FragmentRefresh fragmentRefresh;

public interface FragmentRefresh{
    void refresh(String data);
}

public void setFragmentListener(FragmentRefresh fr){
    this.fragmentRefresh = fr;
}

// call interface function where ever you required
    fragmentRefresh.refresh(data);
((YourActivity)getActivity).setFragmentListener(new FragmentRefresh(){
    @Override
    public void refresh(String data){
        //use this data
    }
});