亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求大神解答,利用接口實現Fragment切換,為什么Log打印說Activity被銷毀了

求大神解答,利用接口實現Fragment切換,為什么Log打印說Activity被銷毀了

Rick_James 2016-12-20 00:30:20
MainActivity: @Override public?void?onClick(View?view)?{ ????switch?(view.getId())?{ ????????case?R.id.bt_user: ????????????cf.setinitif(new?Interface_ChangeFragment()?{ ????????????????@Override ????????????????public?Fragment?initif()?{ ????????????????????return?tab_user; ????????????????} ? ????????????????@Override ????????????????public?int?initTAG()?{ ????????????????????return?3; ????????????????} ????????????}); ????????????break; ????????case?R.id.bt_find: ????????????cf.setinitif(new?Interface_ChangeFragment()?{ ????????????????@Override ????????????????public?Fragment?initif()?{ ????????????????????return?tab_found; ????????????????} ? ????????????????@Override ????????????????public?int?initTAG()?{ ????????????????????return?2; ????????????????} ????????????}); ????????????break; ????????case?R.id.bt_watchmoive: ????????????cf.setinitif(new?Interface_ChangeFragment()?{ ????????????????@Override ????????????????public?Fragment?initif()?{ ????????????????????return?tab_watchMoive; ????????????????} ? ????????????????@Override ????????????????public?int?initTAG()?{ ????????????????????return?1; ????????????????} ????????????}); ????????????break; ????????case?R.id.bt_selectsong: ????????????cf.setinitif(new?Interface_ChangeFragment()?{ ????????????????@Override ????????????????public?Fragment?initif()?{ ????????????????????return?tab_selectSong; ????????????????} ? ????????????????@Override ????????????????public?int?initTAG()?{ ????????????????????return?0; ????????????????} ????????????}); ????????????break; ????????case?R.id.bt_frist: ????????????break; ????} ????? ????? ????? ????? ????接口的實現類: ????public?class?ChangeFragment?extends?FragmentActivity?{ ????int?TAG; ????Tab_selectSong?tab_selectSong; ????Tab_watchMoive?tab_watchmoive; ????Tab_Found?tab_found; ????Tab_User?tab_user; ????public?void?setinitif(Interface_ChangeFragment?interface_changeFragment)?{ ????????FragmentManager?manager?=?getSupportFragmentManager(); ????????FragmentTransaction?fts?=?manager.beginTransaction(); ????????if?(interface_changeFragment.initif()?==?null)?{ ????????????TAG?=?interface_changeFragment.initTAG(); ????????????switch?(TAG)?{ ????????????????case?0: ???????????????????tab_selectSong?=?new?Tab_selectSong(); ????????????????????fts.add(R.id.activity_fragment,tab_selectSong); ????????????????????hideall(); ????????????????????fts.show(tab_selectSong); ????????????????????fts.commit(); ????????????????????break; ????????????????case?1: ????????????????????tab_watchmoive?=?new?Tab_watchMoive(); ????????????????????fts.add(R.id.activity_fragment,tab_watchmoive); ????????????????????hideall(); ????????????????????fts.show(tab_watchmoive); ????????????????????fts.commit(); ????????????????????break; ????????????????case?2: ????????????????????tab_found?=?new?Tab_Found(); ????????????????????fts.add(R.id.activity_fragment,tab_found); ????????????????????hideall(); ????????????????????fts.show(tab_found); ????????????????????fts.commit(); ????????????????????break; ????????????????case?3: ???????????????????tab_user?=?new?Tab_User(); ????????????????????fts.add(R.id.activity_fragment,tab_user); ????????????????????hideall(); ????????????????????fts.show(tab_user); ????????????????????fts.commit(); ????????????????????break; ????????????} ????????}?else?{ ????????????TAG?=?interface_changeFragment.initTAG(); ????????????switch?(TAG)?{ ????????????????case?0: ????????????????????hideall(); ????????????????????fts.show(tab_selectSong); ????????????????????fts.commit(); ????????????????????break; ????????????????case?1: ????????????????????hideall(); ????????????????????fts.show(tab_watchmoive); ????????????????????fts.commit(); ????????????????????break; ????????????????case?2: ????????????????????hideall(); ????????????????????fts.show(tab_found); ????????????????????fts.commit(); ????????????????????break; ????????????????case?3: ???????????????????hideall(); ????????????????????fts.show(tab_user); ????????????????????fts.commit(); ????????????????????break; ????????????} ? ????????} ????} ? ????private?void?hideall()?{ ????????FragmentManager?manager?=?getSupportFragmentManager(); ????????FragmentTransaction?fts?=?manager.beginTransaction(); ????????if(tab_selectSong!=null) ????????{ ????????????fts.hide(tab_selectSong); ????????} ????????if(tab_watchmoive!=null) ????????{ ????????????fts.hide(tab_watchmoive); ????????} ????????if(tab_found!=null) ????????{ ????????????fts.hide(tab_found); ????????} ????????if(tab_user!=null) ????????{ ????????????fts.hide(tab_user); ????????} ????} } ? 用的是按鈕的點擊事件new出一個匿名內部類,之所以這么做,是不想讓主MainAcitity變得臃腫,可是 結果出錯了,Log打印出來是java.lang.IllegalStateException:?Activity?has?been?destroyed ? 求大神解答為什么啊?難道不可以這么寫嗎? 我也是一個新手,才開始寫我的第一個APP。求大神解答
查看完整描述

1 回答

已采納
?
alionSSS

TA貢獻57條經驗 獲得超82個贊

能說下什么時候報的錯嗎?

--->個人推測可能是ChangeFragment?extends?FragmentActivity與MainActivity沖突的問題。(我多嘴一下,Fragment類和FragmentActivity類并不是繼承關系)

【另外】你說你是新手,那我推薦一個開發中比較不錯的用法吧(也是谷歌官方推薦的):使用ViewPager+Fragment的形式,實現fragment頁面之間的切換,具體使用可以參考這里:http://www.xianlaiwan.cn/learn/198?或者?http://www.xianlaiwan.cn/learn/273

------可能我說的你之前都懂,個人能力低微,已經盡力啦,能有幫助就最好-----

查看完整回答
反對 回復 2016-12-24
  • Rick_James
    Rick_James
    都忘了還有這么一個問題了,我已經解決了。具體是怎么回事也忘了。好像是是我有個地方馬虎了 ,不過還是謝謝你,
  • 1 回答
  • 0 關注
  • 1247 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號