作弊代码应用将包含游戏列表。当点击每个游戏时,将显示该游戏的作弊代码。我的问题是,我必须为列出的每个游戏创建一个活动,还是有办法使其在一个活动中起作用。
答案 0 :(得分:2)
不需要,您不需要为列出的每个游戏进行单独的活动,而是可以使用RecyclerView和片段组合使其在一个活动中起作用。
在这里,我为游戏列表添加了一个recyclerView,当单击游戏列表中的项目时,recylerview将被隐藏,而frameLayout id(content)将填充该片段,并在按下后btn时而在片段内部将发生反向操作(隐藏片段并显示recyclerView)。
尽管如果所有游戏都具有相似的数据类型可以显示,那么整个方法可以大大简化, 在这种情况下,您可以将数据传递到片段,并使其仅能处理一个片段。
希望这个回答问题。
**
**
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
**
**
public abstract class SettingsAdapter extends RecyclerView.Adapter<SettingsAdapter.MyViewHolder> {
private static final String TAG = "SettingsAdapter";
private LayoutInflater inflater;
private Context context;
private List<SettingData> data;
public SettingsAdapter(Context context , List<SettingData> data){
inflater = LayoutInflater.from(context);
this.data = data;
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custom_settings_row, parent, false);
SettingsAdapter.MyViewHolder holder = new SettingsAdapter.MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
SettingData current = data.get(position);
holder.settinsName.setText(current.settingName);
holder.hostRelativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OnButtonClicked(v, position);
}
});
}
@Override
public int getItemCount() {
return data.size();
}
protected abstract void OnButtonClicked(View v ,int position);
class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView settinsName;
private final RelativeLayout hostRelativeLayout;
public MyViewHolder(View itemView) {
super(itemView);
settinsName = itemView.findViewById(R.id.settings_name);
hostRelativeLayout = itemView.findViewById(R.id.hostRelativeLayout);
}
}
}
**
**
SettingsAdapter settingsAdapter = new SettingsAdapter(this, getFinalData()) {
@SuppressLint("RestrictedApi")
@Override
protected void OnButtonClicked(View v, int position) {
switch (position) {
case 0:
settingsContent.setVisibility(View.GONE);
fab.show();
configAppbarTittle(StudentSettingsActivity.this, settingNameArr[position]);
appBarLayout.setExpanded(false);
getSupportFragmentManager().beginTransaction().replace(R.id.content, new SavedPlacesFragment()).commit();
break;
case 1:
//similar
break;
case 2:
//similar
break;
case 3:
//similar
break;
default:
break;
}
}
};
settingsRecycleView.setAdapter(settingsAdapter);
settingsRecycleView.setLayoutManager(new LinearLayoutManager(this));
**
**
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class SavedPlacesFragment extends Fragment {
private StudentSettingsActivity myMainActivity;
private RecyclerView savedPlacesRecycler;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
myMainActivity = (StudentSettingsActivity) getActivity();
}
@SuppressWarnings("unchecked")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//myMainActivity = (StudentSettingsActivity) getActivity();
View rootView = inflater.inflate(R.layout.stu_setting_saved_places_fragment, container, false);
return rootView;
}
private void flush(String msg) {
Toast.makeText(myMainActivity, msg, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
myMainActivity.fab.hide();
startActivity(new Intent(getActivity(), StudentSettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
请理解以下事实:我已经复制了我的作品中的副本 代码在这里。只是为了演示方式。如果您复制粘贴此代码 将无法正常工作。您必须通读代码以了解方式 它已经实现,然后以您自己的方式编写
答案 1 :(得分:0)
...您说的是作弊代码应用包含游戏列表
您创建一个活动以显示列表
...。如果您点击列表以获取新游戏
因此,您必须创建片段或活动才能通过单击列表来显示游戏
答案 2 :(得分:0)
您可以创建一个活动,并使其包含多个片段。 您的活动(可以说MainActivity)将负责显示片段。 从总体上讲,您需要2个片段:
GameListFragment
GameCheatCodeDetailsFragment
请参考SmartShows以获得一些代码参考。