如何在 android studio 中将片段分离到不同的文件中?

How to separate fragments to different files in android studio?

我正在尝试在 android 工作室中开发一个 android 应用程序,并且我一直在 mainActivity class 中编写越来越多的片段。我的问题是如何将它们分开到另一个文件?可能我做错了,如果可以,有人可以告诉我应该怎么做吗?

我的代码:

public class MainActivity extends ActionBarActivity
    implements NavigationDrawerFragment.NavigationDrawerCallbacks {
.
.
.
public static class PlaceholderFragment1 extends Fragment {...}
public static class PlaceholderFragment2 extends Fragment {...}
public static class PlaceholderFragment3 extends Fragment {...}
}

您可以毫无问题地将它们作为单独的 class 写在同一包中,然后使用它们。否则将它们写在一个单独的包中并像任何其他包一样导入它们 class.

由于它们是内部静态 classes,AndroidStudio 可以轻松地为您重构这些。 Select PlaceholderFragment1(只需将文本光标放在上面)并按 F6(或右键单击片段名称->重构->移动)和 select `移动内部 class [fragment name] to upper level',根据需要更改名称和包,然后点击重构。

Fragment 具有静态内部 class 很好(技术上可行),但如果您想在另一个 activity 中重用该片段,最好将其重构。此外,大多数人喜欢使 classes 尽可能小,如果片段的功能在逻辑上与 activity 分开,则没有理由将其作为内部 class .

首先您需要创建一个新的 class(新的 class 文件)

注意:您需要为必须定义片段逻辑的每个片段创建这样的 class。

public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.article_view, container, false);
}
//logic here
}

然后您可以在扩展 FragmentActivity 的 MainActivity 中使用它,例如:

MyFragment fragment= new MyFragment();

或如果存在

fragment= (MyFragment)getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG);

您可以设置片段以查看:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.frameLayout, fragment, FRAGMENT_TAG);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            ft.addToBackStack(null);
            ft.commit();