我是 Java 和 Android 的新手,正在阅读在线 android 指南。我有两个问题:
问题 1: 为什么需要在 公共(public)静态类?
问题2:“创建新实例”进一步声明了一个新的DetailsFragment。全面的 有四个地方使用了相同的名称“DetailsFragment”。这非常令人困惑。 请解释一下?
public static class DetailsFragment extends Fragment {
/* Create a new instance of DetailsFragment, initialized
to show the text at 'index'. */
public static DetailsFragment newInstance(int index) {
DetailsFragment f = new DetailsFragment();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
}
最佳答案
这叫做 static factory method
pattern ,在这种情况下,您可以轻松创建 fragment 的新实例,并填充所有必需的参数,而无需了解内部实现。例如,如果没有这个,要创建一个正确初始化的 Fragment 实例,您可以使用:
DetailsFragment fragment = new DetailsFragment();
Bundle args = new Bundle();
args.putInt("index", index);
fragment.setArguments(args);
// Then use the fragment however you need it
使用静态工厂方法,所有这些逻辑都内化到 Fragment 本身,您可以简单地使用:
DetailsFragment fragment = DetailsFragment.newInstance(index);
// Then use the fragment
关于java - 为什么在公共(public)静态类中实例化一个新 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263543/