如何在 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();
我正在尝试在 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();