【问题标题】:implementing onbackpressed in android在android中实现onbackpressed
【发布时间】:2017-09-27 08:55:01
【问题描述】:

我有活动 1 带我到活动 2 带我碎片。我想从片段回到活动2

public void onBackPressed() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

【问题讨论】:

  • activity2take你怎么能分到一个片段???它可以自己打开一个片段,也可以启动另一个包含片段的活动

标签: android android-activity fragment onbackpressed


【解决方案1】:
@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    }
    else
        super.onBackPressed();
}

【讨论】:

    【解决方案2】:

    从activity2添加片段时,像这样将其添加到backstack

    getSupportFragmentManager().beginTransaction()
                               .replace(R.id.frame_layout, new SampleFragment())
                               .addToBackStack(SampleFragment.class.getSimpleName())
                               .commit();
    

    onBackPressed 检查片段是否存在于 backstack 中并弹出它

     @Override
    public void onBackPressed() {
        if(getSupportFragmentManager().getBackStackEntryCount()>0){
            Fragment fragment=getSupportFragmentManager().findFragmentById(R.id.YOUR_FRAME_LAYOUT_ID);
            if(fragment!=null && fragment.getClass().getSimpleName().equalsIgnoreCase(SampleFragment.class.getSimpleName())){
                getSupportFragmentManager().popBackStackImmediate();
            }
        }else {
            super.onBackPressed();
        }
    }
    

    【讨论】:

      【解决方案3】:

      在片段上获得回压事件并调用

      getactivity().getsupportfragmentmanager().popbackstack();
      

      【讨论】:

        【解决方案4】:

        将该片段事务添加到后台堆栈。

        【讨论】:

          猜你喜欢
          • 2011-07-23
          • 2019-02-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-29
          • 2022-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多