首页 > 解决方案 > 我是否需要创建另一个活动来显示一些信息?(安卓) (Java)

问题描述

嗨,我是一个 android 初学者,只是想弄清楚,

现在我被困了几天,想知道如何创建 1 个活动并根据用户选择的按钮更改其内容。

所以我正在构建一个小项目,它是一个急救应用程序,其中至少有 15-25 个按钮列表,可以显示不同类型的急救教程。实现这一点的最佳方法是什么?

到目前为止,我已经设法创建了一个按钮列表,将用户引导到另一个活动 按钮列表

单击刻录按钮后,将弹出这些步骤,每个步骤都是可点击的,并将用户引导至另一个活动,该活动将使用图像和视频详细说明该步骤 点击烧伤按钮后

我已经尝试使用 1 个活动并使用发送信息,intent.putExtra()但是问题是我无法更改每个步骤的按钮目标(详细说明部分),它更改了每个步骤的信息,但是当它被单击时。它只是将我引向(烧伤步骤)的相同详细说明部分。

我确信有更好的方法来实现这一点,而不是为每个单击的按钮创建另一个活动,只显示很少的信息。任何帮助将不胜感激请注意,我真的只是一个初学者,内容丰富的解释将真正帮助我很多谢谢。

代码(list_of_firstAid.java):

  buttonBurns.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), burnsActivity.class);

            intent.putExtra("procedure_1", getResources().getString(R.string.burns_procedure_1));
            intent.putExtra("procedure_2", getResources().getString(R.string.burns_procedure_2));
            intent.putExtra("procedure_3", getResources().getString(R.string.burns_procedure_3));
            intent.putExtra("procedure_4", getResources().getString(R.string.burns_procedure_4));
            intent.putExtra("procedure_5", getResources().getString(R.string.burns_procedure_5));
            intent.putExtra("note_procedure_1", getResources().getString(R.string.burns_note_1));

            startActivity(intent);
        }
    });

代码:(burnsActivity.java)

public void process(View view){
    if(view.getId() == R.id.burnsStep1)
    {
        Intent intent = new Intent(burnsActivity.this, displayInfoActivity.class);
        intent.putExtra("step_1", getResources().getString(R.string.firstaid_burnsactivity_information_number_1_bullet_1));
        intent.putExtra("image_1", R.drawable.round_bk2);
        intent.putExtra("step_2", "this is step 2");
        startActivity(intent);
    }
    else if(view.getId() == R.id.burnsStep2)
    {
        Intent intent = new Intent(burnsActivity.this, displayInfoActivity.class);
        intent.putExtra("step_1", getResources().getString(R.string.firstaid_burnsactivity_information_number_2_bullet_1));
        intent.putExtra("image_1", R.drawable.round_bk3);
        intent.putExtra("step_2", "");
        startActivity(intent);
    }
    else if (view.getId() == R.id.burnsStep3)
    {
        Intent intent = new Intent(burnsActivity.this, displayInfoActivity.class);
        intent.putExtra("step_1", getResources().getString(R.string.firstaid_burnsactivity_information_number_3_bullet_1));
        intent.putExtra("image_1", R.drawable.round_bk5);
        intent.putExtra("step_2", getResources().getString(R.string.firstaid_burnsactivity_information_number_3_bullet_2));
        startActivity(intent);
    }
    else if (view.getId() == R.id.burnsStep4)
    {
        Intent intent = new Intent(burnsActivity.this, displayInfoActivity.class);
        intent.putExtra("step_1", getResources().getString(R.string.firstaid_burnsactivity_information_number_4_bullet_1));
        intent.putExtra("image_1", R.drawable.round_bk5);
        intent.putExtra("step_2", getResources().getString(R.string.firstaid_burnsactivity_information_number_4_bullet_2));
        startActivity(intent);
    }
    else if (view.getId() == R.id.burnsStep5)
    {
        Intent intent = new Intent(burnsActivity.this, displayInfoActivity.class);
        intent.putExtra("step_1", getResources().getString(R.string.firstaid_burnsactivity_information_number_5_bullet_1));
        intent.putExtra("image_1", R.drawable.round_bk5);
        intent.putExtra("step_2", getResources().getString(R.string.firstaid_burnsactivity_information_number_5_bullet_2));
        startActivity(intent);
    }
    else if (view.getId() == R.id.burnsNote1)
    {
        Intent intent = new Intent(burnsActivity.this, displayInfoActivity.class);
        intent.putExtra("step_1", getResources().getString(R.string.firstaid_burnsactivity_information_number_6_bullet_1));
        intent.putExtra("image_1", R.drawable.round_bk5);
        intent.putExtra("step_2", getResources().getString(R.string.firstaid_burnsactivity_information_number_6_bullet_2));
        startActivity(intent);
    }

编辑:上面的代码将更改每个步骤的信息。但是,这些步骤也可以单击。因此,当我重用此活动进行出血(例如)并更改每个步骤的文本时,它可以工作,但是当单击它时,它会显示与我放在burnsActivity 上的相同信息。 在此处输入图像描述

标签: javaandroid

解决方案


我也是一名初级 Android 开发人员,我曾开发过一个与您的非常相似的应用程序。

结构

您应该在模型视图控制器层中分离您的项目,以使其更易于开发和维护。


模型

模型由两个名为AidTool和的类组成AidBox

AidTool- 它代表一个单一的辅助工具。它应该包含工具的名称及其教程。为每个工具分配一个 UID,这将在以后为您提供帮助

AidBox- 它将所有辅助工具存储在一个ArrayList. 它应该包含检索任何工具的方法。


看法

View 由一个活动组成,该活动ToolList将显示每个辅助工具。我建议您使用RecyclerView显示每个辅助工具的名称并处理它们上的任何点击事件。


控制器

控制器由单个活动组成ToolTutorial。单击 上的任何辅助工具后ToolList,开始活动ToolTutorial它应该使用一个额外的命名工具 UID,用于显示工具教程


我没有提供很多细节。我刚刚提供了应用程序的整体结构。使用模型层,您可以只使用单个活动来显示任何辅助工具的教程。您还应该研究singletons。如果您使用此结构,它可能会对您的应用程序有所帮​​助。

我希望我对你有所帮助。


推荐阅读