Android 以适当的方式创建片段
我是android开发新手。最近我开始使用碎片开发应用程序。我搜索了一些教程,并尝试使用碎片。在我的应用程序中,我使用的是导航抽屉。现在假设如果用户在frag a上,并且如果用户再次选择frag a,则frag a将再次创建,并将前一个frag a保留在后堆栈中。现在我该如何操作构建我的frag,使其非常优化 我写的代码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;
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);使用此代码谢谢,所以在我的每个片段项目中,我应该使用此代码添加或替换片段??