在fragment中用頻道管理遇到的問題(解決)
阿新 • • 發佈:2019-01-02
ps:和在Activity中做大體是一樣的,如果想了解具體內容,請觀看上一篇文章:https://blog.csdn.net/weixin_43807869/article/details/85062439
在fragment做頻道管理遇到的問題:
大家仔細觀察就可以發現,不論怎麼去掉頻道,返回後頻道還在
可以判斷是onActivityResult方法沒有接收到回傳值
對比一下,Activity做法與Fragment做法不同之處
Fragment:
//進入頻道管理 ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),tele_list);
Activity:
//啟動管理,跳轉(進入頻道管理),將頻道集合傳過去
ChannelActivity.startChannelActivity(MainActivity.this,titlelist);
引數一個是getActivity(),一個是MainActivity.this
getActivity():fragment沒有上下文,它只能求助於它繫結的Activity
所以說修改頻道後返回,值沒有回傳到Fragment中的onActivityResult而是回傳到了它繫結的activity中
解決辦法:
在fragment繫結的Activity中,重寫onActivityResult方法,將data傳遞給fragment中的onActivityResult方法:
//接受到新頻道的值 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //根據tag找到fragment Fragment ff = getSupportFragmentManager().findFragmentByTag("ff"); //將得到的新頻道傳遞給fragment01的onActivityResult ff.onActivityResult(requestCode, resultCode, data); }
結果圖:
最後:我還遇見一種錯誤,操作頻道後,切換下方的fragment(點選訊息2/3),再次返回訊息1發現又回到最初的頻道:
原因是:切換fragment,我用的替換事務的方法,每次切換都會new新的fragment**
**這樣:**
//獲取事務管理
manager = getSupportFragmentManager();
//開啟事務
FragmentTransaction fragmentTransaction = manager.beginTransaction();
//新增事務
fragmentTransaction.add(R.id.frameLt,new Fragment01());
//提交事務
fragmentTransaction.commit();
//第一個Radiobutton預設選中
radioGroup.check(radioGroup.getChildAt(0).getId());
//radioGroup的監聽
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
//開啟新事務,上一個已經提交
FragmentTransaction fragmentTransaction2 = manager.beginTransaction();
switch (i){
case R.id.btn01:
//替換fragment
fragmentTransaction2.replace(R.id.frameLt,new Fragment01());
break;
case R.id.btn02:
fragmentTransaction2.replace(R.id.frameLt,new Fragment02());
break;
case R.id.btn03:
fragmentTransaction2.replace(R.id.frameLt,new Fragment03());
break;
}
fragmentTransaction2.commit();
}
});
ps:可能只有我會遇到這種錯吧! 希望對大家有幫助~~