Java 单个活动能否用于多个操作?

Java 单个活动能否用于多个操作?,java,android,Java,Android,作弊代码应用程序将有一个游戏列表。当每个游戏被点击时,将显示该游戏的作弊代码。我的问题是,我是否必须为列出的每个游戏创建一个活动,或者是否有办法使其在一个活动中工作。…你说作弊代码应用程序有游戏列表 您可以创建一个活动来显示列表 …如果你点击列表获得新游戏 因此,您必须通过单击列表创建片段或活动来显示游戏您可以创建单个活动并使其包含多个片段。 您的活动(比如MainActivity)将负责显示片段。 在较高级别上,您需要2个片段: 配子表片段 要显示游戏列表和游戏项目,请单击。您需要一个回收器

作弊代码应用程序将有一个游戏列表。当每个游戏被点击时,将显示该游戏的作弊代码。我的问题是,我是否必须为列出的每个游戏创建一个活动,或者是否有办法使其在一个活动中工作。

…你说作弊代码应用程序有游戏列表

您可以创建一个活动来显示列表

…如果你点击列表获得新游戏


因此,您必须通过单击列表创建片段或活动来显示游戏

您可以创建单个活动并使其包含多个片段。 您的活动(比如MainActivity)将负责显示片段。 在较高级别上,您需要2个片段:

配子表片段

  • 要显示游戏列表和游戏项目,请单击。您需要一个回收器视图来显示此碎片上的游戏列表
GameCheatCodeDetailsFragment

  • 用于显示作弊代码

请参阅以获取一些代码参考。

不,您不需要为列出的每个游戏进行单独的活动,而可以使用RecyclerView和fragments组合,使其在一个活动中工作

在这里,我为游戏列表添加了一个recyclerView,当单击游戏列表中的项目时,recylerview将被隐藏,frameLayout id(内容)将被碎片填充,当在碎片内部按下back btn时,将发生反转(隐藏碎片并显示recyclerView)

虽然整个方法可以简化得多如果所有游戏都有相似类型的数据显示,那么你可以, 在这种情况下,您可以将数据传递给片段,并使其仅使用一个片段

希望这能回答问题

**

XML代码 **

**

活动内的片段代码 **

请理解我已经从我的作品中粘贴了副本 代码在这里。只是为了示范一下。如果你复制粘贴这段代码它 不行。你必须通读代码才能理解方法 它已经实现了,然后用您自己的方式编写


我试图引用并运行SmartShows,但出现了一些错误。检查过你的书架了吗?不确定你可能会遇到什么错误。但是您可以引用它来获得一些代码参考,这些代码参考涉及如何按照您想要的方式创建活动和片段
<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);
    }

}