首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动中的后退按钮正在删除片段

活动中的后退按钮正在删除片段
EN

Stack Overflow用户
提问于 2017-11-07 09:33:37
回答 2查看 639关注 0票数 0

我正在努力保持Fragment的状态。我有MotherActivity,其中有FragmentOneFragmentTwoFragmentThree,以及来自FragmentTwo的内部,我称之为另一个ActivityChildActivity。问题是,当我在ChildActivity中按回按钮时,它是在刷新MotherActivity,而不是保持MotherActivity的状态,而是向我展示了第一次出现的FragmentOne

我只希望当我从ChildActivity按下ChildActivity时,容器FragmentTwo上应该有:

MainAcitivity:

代码语言:javascript
复制
public class MotherActivity extends FragmentActivity {

    AHBottomNavigation bottomNavigation;
    Fragment selectedFragment = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bottomNavigation = (AHBottomNavigation) findViewById(R.id.navigation);
        bottomNavigation.addItem(item1);
        bottomNavigation.addItem(item2);
        bottomNavigation.addItem(item3);

        bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {
            @Override
            public boolean onTabSelected(int position, boolean wasSelected) {

                if (position == 0) {
                    selectedFragment = FragmentOne.newInstance(bottomNavigation);
                } else if (position == 1) {
                    selectedFragment = FragmentTwo.newInstance(bottomNavigation);
                } else if (position == 2) {
                    selectedFragment = FragmentThree.newInstance(bottomNavigation);
                } 

                android.app.FragmentManager fragmentManager = getFragmentManager();
                android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.frame_layout,selectedFragment);
                fragmentTransaction.commit();


                return true;

            }

        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        android.app.FragmentManager fragmentManager = getFragmentManager();
        android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.frame_layout, FragmentOne.newInstance(bottomNavigation));
        fragmentTransaction.commit();

    }

    public void setNotification(){
        bottomNavigation.setNotification("1", 1);
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        //No call for super().
    }
    @Override
    public void onBackPressed() {
        Intent intent = new Intent();
        setResult(113, intent);
        finish();
        return;

    }
}

FragmentTwo,在我打电话给childActivity的地方

代码语言:javascript
复制
public class FragmentTwo extends Fragment {
    public static AHBottomNavigation bottomNavigation1;
    Card_detail_Adapter_Footer searchabledapter;
    public static boolean showAddress = false;
    Fragment selectedFragment;

    public static FragmentTwo newInstance(AHBottomNavigation bottomNavigation) {
        FragmentTwo fragment = new FragmentTwo();
        bottomNavigation1 = bottomNavigation;
        showNotificationCounter(3);

        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view   = inflater.inflate(R.layout.fragment_cart, container, false);
        if(showAddress == true){
            showAddress = false;

      // From here I am calling ChildActivity

            Intent intent = new Intent(getActivity(), ChildActivity.class);
            startActivity(intent);

        }
        return view;
    }

}

ChildActivity中,只需调用onBackPressed()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-07 09:50:39

问题在于您的onStart()方法是MotherActivity.java,因为当您从FragmentTwo打开另一个活动时,会调用您的MotherActivity onStop()。当您按下ChildActivity的后退按钮时,调用onStart() of MotherActivity,这将通过提交事务来取代FragmentOne中的FragmentTwo。请看一下https://developer.android.com/guide/components/activities/activity-lifecycle.html

票数 2
EN

Stack Overflow用户

发布于 2017-11-07 10:39:30

onStart()方法中的代码放入onCreate()方法,并检查配置是否已更改:

代码语言:javascript
复制
if (savedInstanceState == null) {
    android.app.FragmentManager fragmentManager = getFragmentManager();
    android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.frame_layout, FragmentOne.newInstance(bottomNavigation));
    fragmentTransaction.commit();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47154337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档