我想制作一个具有一些级别的小型游戏,用户根据他在屏幕上看到的内容以及是否有效-进行级别输入。
我有LevelActivity,它管理不同级别的片段。我想将 LevelFragment 设为abstruct类,然后使用诸如 SimplestLevelFragment 之类的其他子片段(级别)对其进行扩展。
所有级别都有一些常见的论点,我不知道如何将其传递给超类?
提供的代码:
LevelFragment.java
public abstract class LevelModelFragment extends Fragment {
protected boolean completed;
private int id;
private String name;
private String[] hints;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return provideFragmentView(inflater, container, savedInstanceState);
}
protected abstract View provideFragmentView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState);
public abstract boolean checkCompletion();
public abstract void handleInput(String input);}
SimplestLevelFragment.java
public class SimplestLevelFragment extends LevelModelFragment {
private final static int id = 1;
private final static String name = "The simplest level I have ever seen";
private final static String[] hints = {"Enter the name of program"};
@Override
protected View provideFragmentView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.simpleLevelLayout,parent,false);
//Now specific components here (you can initialize Buttons etc)
return view;
}
@Override
public boolean checkCompletion() {
return this.completed;
}
@Override
public void handleInput(String input) {
if(input == "Secret Path"){
this.completed = true;
}
}}
也许我应该使用另一种架构方法?
答案 0 :(得分:1)
初始化child Fragment
时,应将公用参数放入Bundle
中并调用setArguments
。在方法super Fragment
中的onCreate
中,可以获取它。
Fragment child = new SimplestLevelFragment();
Bundle data = new Bundle();
// put common value to data
child.setArguments(data);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle data = getArguments();
// get common value you already pass
}