Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的碎片问题_Android_Android Fragments_Fragmenttransaction - Fatal编程技术网

android中的碎片问题

android中的碎片问题,android,android-fragments,fragmenttransaction,Android,Android Fragments,Fragmenttransaction,当我点击布局中的back图标时,它会转到上一个片段,但不会转到它被杀死的片段。解决这个问题的方法是什么? 我正在使用finish()和backbackback,但它对我不起作用 back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { android.support.v4.app.Fragment

当我点击布局中的back图标时,它会转到上一个片段,但不会转到它被杀死的片段。解决这个问题的方法是什么?
我正在使用
finish()
和backbackback,但它对我不起作用

    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                android.support.v4.app.Fragment onlineFragments = new OnlineFragments();
                android.support.v4.app.FragmentManager fragmentManagerprofile = getActivity().getSupportFragmentManager();
                android.support.v4.app.FragmentTransaction fragmentprofileTransaction = fragmentManagerprofile.beginTransaction();
                fragmentprofileTransaction.replace(R.id.background_fragment, onlineFragments);
                fragmentprofileTransaction.commit();
        }
    });
片段A

        case R.id.recharge:
            HomeActvity.toolbar.setVisibility(View.GONE);
            android.support.v4.app.Fragment Recharge = new Prepaid_recharge();
            android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.containerView, Recharge);
            fragmentTransaction.commit();
            break;

我使用此代码添加和删除片段。如果我不需要该片段在后堆栈中,我将布尔值发送为false。执行此操作时,按工具栏上的“后退”按钮将打开正确的“活动”

public static void changeFragment (MyActivity activity, Fragment fragment, int fragmentContainer, boolean addToBackStack){

        FragmentManager fragmentManager = activity.getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(fragmentContainer, fragment);

      /*here we keep track of fragments and avoiding last blank fragment by passing true*/
        if(addToBackStack){
            fragmentTransaction.addToBackStack(null);
        }
        fragmentTransaction.commit();
    }

无论何时在片段之间进行事务,并且希望导航回上一个片段(返回按钮),在事务中,必须在提交之前将此事务添加到backbackback:

Android文档:

“但是,在调用commit()之前,您可能需要调用addToBackStack(),以便将事务添加到片段事务的后堆栈中。此后堆栈由活动管理,允许用户通过按“上一步”按钮返回到以前的片段状态。


它转到上一个片段,但不转到被杀死的片段?更清晰的意思是它会进入手机的主屏幕,就像我们使用finish()片段A单击,然后片段B打开。当我单击片段B时,它会进入片段A,这就是它应该如何工作的na?你到底想实现什么?当我点击片段A时,片段b在片段b布局工具栏中打开,有后退图标,所以当我点击后退图标时,它会转到片段A,这意味着你不想在片段b中按后退时片段A打开?如果你点击后退,会发生什么?
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();