Android fragments 如何在嵌套片段中的backpressed上更新listview?

Android fragments 如何在嵌套片段中的backpressed上更新listview?,android-fragments,Android Fragments,这是我的片段,我有一个列表视图,我正在用ChapterListAdapter填充它 课程片段 public class CurriculumFragment extends Fragment implements ResponseDelegate { Context contextd; ListView curriculumList; FragmentActivity mActivity; boolean onResult

这是我的片段,我有一个列表视图,我正在用ChapterListAdapter填充它

课程片段

    public class CurriculumFragment extends Fragment implements 
ResponseDelegate {
        Context contextd;
        ListView curriculumList;
        FragmentActivity mActivity;
        boolean onResult=false;
        int requestCode, resultCode;
        Intent data;
        String courseId;
        private RequestedServiceDataModel requestedServiceDataModel;
        private ArrayList<ChapterItem> courses = new ArrayList<>();
        private ChaptersListAdapter adapter;

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            contextd = container.getContext();
            View rootView = inflater.inflate(R.layout.fragment_circulam, container, false);
            courseId = getArguments().getString("course_id","2");
            curriculumList = (ListView) rootView.findViewById(R.id.circulamList);
            adapter = new ChaptersListAdapter((AppCompatActivity) getActivity(), courses);
            curriculumList.setAdapter(adapter);   
            serverRequestForCompleteModule();  // This function fill arraylist courses with data.
            return rootView;
        }
        @Override
        public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = (FragmentActivity) activity;
        }

        @Override
        public void onDetach() {
        super.onDetach();
        contextd = null;
        mActivity = null;
        }

        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent 
data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == getActivity().RESULT_OK && requestCode == 1111)
        {
        courses.clear();
        courses = (ArrayList<ChapterItem>) data.getSerializableExtra("list");
        adapter = new ChaptersListAdapter((AppCompatActivity)mActivity, 
courses);
        curriculumList.setAdapter(adapter);
        }
    }
公共类课程片段扩展片段实现
响应特使{
语境语境;
ListView课程列表;
碎片活性;
布尔onResult=false;
int requestCode,resultCode;
意向数据;
字符串courseId;
私有RequestedServiceDataModel RequestedServiceDataModel;
私有ArrayList课程=新建ArrayList();
专用章静态适配器;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
contextd=container.getContext();
视图根视图=充气机。充气(R.layout.fragment\u circulam,container,false);
courseId=getArguments().getString(“课程id”,“2”);
课程列表=(ListView)rootView.findViewById(R.id.circulamList);
adapter=新章节slistadapter((AppCompatActivity)getActivity(),课程);
设置适配器(适配器);
serverRequestForCompleteModule();//此函数使用数据填充arraylist课程。
返回rootView;
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
mActivity=(碎片活动)活动;
}
@凌驾
公共无效连接(){
super.onDetach();
contextd=null;
mActivity=null;
}
@凌驾
activityResult上的公共void(int请求代码、int结果代码、意图
(数据){
super.onActivityResult(请求代码、结果代码、数据);
如果(resultCode==getActivity().RESULT_OK&&requestCode==1111)
{
课程。清晰();
courses=(ArrayList)data.getSerializableExtra(“列表”);
adapter=新章节SlistAdapter((AppCompatActivity)MacActivity,
课程);
设置适配器(适配器);
}
}
我正在像这样打开Activity MediaPlayerActivity 3

章节列表适配器

     void dialogMediaPlayer(final ArrayList<ChapterItem.Module> mlist, final int position, String title, String imageUrl,String chapname,boolean audioStream) {

        Intent mint = new Intent(contextd, MediaPlayerActivity3.class);
        Bundle bundle = new Bundle();
        bundle.putSerializable("courselist",list);
        bundle.putSerializable("list",mlist);
        bundle.putInt("gpos",glPos);
        bundle.putInt("pos",position);
        bundle.putString("title",title);
        bundle.putString("image",imageUrl);
        bundle.putString("chapter",chapname);
        bundle.putBoolean("stream",audioStream);
        mint.putExtras(bundle);
        contextd.startActivityForResult(mint,1111);
        contextd.overridePendingTransition( R.anim.slide_up, R.anim.slide_down );
}
void dialogMediaPlayer(最终数组列表mlist,最终int位置,字符串标题,字符串imageUrl,字符串chapname,布尔音频流){
Intent mint=新Intent(contextd,MediaPlayerActivity3.class);
Bundle=新Bundle();
bundle.putSerializable(“课程列表”,列表);
bundle.putSerializable(“list”,mlist);
bundle.putInt(“GPO”,glPos);
bundle.putInt(“位置”,位置);
bundle.putString(“title”,title);
bundle.putString(“image”,imageUrl);
bundle.putString(“章”,章名);
bundle.putBoolean(“流”,audioStream);
薄荷糖(束);
背景:startActivityForResult(造币厂,1111年);
上下文。覆盖转换(R.anim.slide\u向上,R.anim.slide\u向下);
}
现在我在Activity中完成我的工作,现在当我按下backpress键时,我想更新课程片段中的listView,这是通过OnActivityResult方法完成的,但在OnActivityResult方法中getActivity()始终返回null

活动中的OnBackpressed方法如下

MediaPlayerActivity 3

public class MediaPlayerActivity3 extends AppCompatActivity implements ResponseDelegate {
               @Override
public void onBackPressed() {
    saveInsatance(tmpModule.get(position).getModule_id());
    stop = false;
    myHandler.removeCallbacks(UpdateSongTime);

    int x1=0;
    if(tmpModule.get(posit).getIs_module_comeplete().equals("0")){
        x1=(int)(TimeUnit.MILLISECONDS.toSeconds((long)finalTime)-TimeUnit.MILLISECONDS.toSeconds((long)startTime));
        if(x1<5){
            serverRequestQuizForAudeoComplite(tmpModule.get(posit).getModule_id());
            tmpModule.get(posit).setIs_module_comeplete("1");

        }
    }
    courses.get(glpos).setModule_files(tmpModule);
    Intent returnIntent = new Intent();
    Bundle bundle = new Bundle();
    bundle.putSerializable("list",courses);
    bundle.putString("complete",completed);
    returnIntent.putExtras(bundle);
    setResult(Activity.RESULT_OK,returnIntent);
    super.onBackPressed();
 }
}
公共类MediaPlayerActivity 3扩展AppCompativeActivity实现ResponseDelegate{
@凌驾
public void onBackPressed(){
saveInStatance(tmpModule.get(position.getModule_id());
停止=错误;
myHandler.removeCallbacks(UpdateSongTime);
int-x1=0;
if(tmpModule.get(posit.getIs_module_comeplete().equals(“0”)){
x1=(int)(TimeUnit.millizes.toSeconds((long)finalTime)-TimeUnit.millizes.toSeconds((long)startTime));

如果(x1),请提供一个。请查看共享代码的指南。这是否足够?