Android 以适当的方式创建片段

Android 以适当的方式创建片段,android,android-fragments,Android,Android Fragments,我是android开发新手。最近我开始使用碎片开发应用程序。我搜索了一些教程,并尝试使用碎片。在我的应用程序中,我使用的是导航抽屉。现在假设如果用户在frag a上,并且如果用户再次选择frag a,则frag a将再次创建,并将前一个frag a保留在后堆栈中。现在我该如何操作构建我的frag,使其非常优化 我写的代码 public class MasterFragment extends Fragment { protected static Context context;

我是android开发新手。最近我开始使用碎片开发应用程序。我搜索了一些教程,并尝试使用碎片。在我的应用程序中,我使用的是导航抽屉。现在假设如果用户在frag a上,并且如果用户再次选择frag a,则frag a将再次创建,并将前一个frag a保留在后堆栈中。现在我该如何操作构建我的frag,使其非常优化

我写的代码

public class MasterFragment extends Fragment {
    protected static Context context;
    private FragmentTransaction fragmentTransaction;
    private ProgressDialog progressDialog;
    protected View view;
    private AlertDialog.Builder builder;
    protected File file;
    String fileSeperator = "/";
    private InputMethodManager inputMethodManager;
    private static String boundary = "*****";
    private static String lineEnd = "\r\n";
    private static String twoHyphens = "--";
    private File f;
    private String response;


    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        context = getActivity();
    }


    protected void startFragment(Fragment fragment, String fragName, String backStackName, boolean value) {
        fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
        fragmentTransaction.replace(R.id.frag_container, fragment, fragName);

        if (value) {
            fragmentTransaction.addToBackStack(backStackName);
        }

        fragmentTransaction.commit();

    }

我制作了一个扩展片段的主类,这个主类被其他类扩展。现在我的方法正确吗?

你的方法正确。我已经用类似的方法实现了

public void replaceFragment (Fragment fragment){

    try {
        String backStateName =  fragment.getClass().getName();
        String fragmentTag = backStateName;


        FragmentManager manager =getSupportFragmentManager();
        boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);
        if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null){ 
            FragmentTransaction ft = manager.beginTransaction();
            ft.replace(R.id.container, fragment, fragmentTag);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.addToBackStack(backStateName);
            ft.commit();
        }
    } catch (Exception e) {

        e.printStackTrace();
    } 
}
希望这能帮助你

将“startFragment”方法替换为“replaceFragment”
并在需要的地方扩展MasterFragment

你能告诉我这将做什么吗???@user3917131用“replaceFragment”替换你的“startFragment”方法,并在你想要的地方扩展MasterFragment如果我不想在backbackbackbackft.addToBackStack中添加一个片段(null);使用此代码谢谢,所以在我的每个片段项目中,我应该使用此代码添加或替换片段??