• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

求大神解答,利用接口实现Fragment切换,为什么Log打印说Activity被销毁了

MainActivity:@Overridepublic 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

能说下什么时候报的错吗?
--->个人推测可能是ChangeFragmentextendsFragmentActivity与MainActivity冲突的问题。(我多嘴一下,Fragment类和FragmentActivity类并不是继承关系)
【另外】你说你是新手,那我推荐一个开发中比较不错的用法吧(也是谷歌官方推荐的):使用ViewPager+Fragment的形式,实现fragment页面之间的切换,具体使用可以参考这里:http://www.imooc.com/learn/198或者http://www.imooc.com/learn/273
------可能我说的你之前都懂,个人能力低微,已经尽力啦,能有帮助就最好-----

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!