我对 java +/- android 编码(旧的 C++ 编码器)比较陌生。我正在构建一个应用程序,用户可以在其中使用类似的界面处理不同的案例。答案/功能/内部运作/数字将根据情况而有所不同。
示例:我有一个 VitalsDisplay 活动,它应该是通用的 Vitals 显示代码。它想使用一个函数 - SetVitals(Vitals) - 在显示生命体征之前修改字符串数组 Vitals。
SetVitals 必须是“智能的”——基于我正在处理的情况(int CaseNumber,在 MainActivity 中定义的公共 int),它将以不同的方式修改生命体征数组。现在,定义 SetVitals 的简单方法是:
public static string[] SetVitals(String[] givenVitals){
switch (MainActivity.CaseNumber){
case 1:
//Change vitals in one way
break;
case 2:
//Change Vitals in another way
break;
}
}
我不想这样做,因为我担心将来会扩展 - 例如,如果我想添加额外的案例,我将不得不搜索并检查这段代码以进行更改。此外,每个案例需要做的不仅仅是设置生命体征(您将订购测试等,这将不得不根据案例返回不同的结果)。因此,在未来扩展它意味着我必须通过 Vitals、Results、Tests 函数等来寻找和啄食。
相反,我希望定义多个活动:
例如 ChestPain1、ChestPain2 和 ChestPain3。每个都有一个 SetVitals(字符串数组 Vitals)的实例。它们还将具有可由主活动调用的 OrderResults、CaseUpdates 等实例。
这种方法的问题有两个:
- 现在 switch 语句被移动到 VitalsDisplay 活动/函数。这本身还不错——在某些时候需要一个 switch 语句来根据用户正在执行的情况来决定需要调用哪个函数。
我想知道是否有一种方法不必每次我需要从唯一活动中的函数(基于 CaseNumber)中获取特定于案例的信息时都不必重新创建 switch 语句?我尝试基于 switch 语句创建意图,然后使用意图调用函数......但失败了(可能是我的错,因为我还不擅长使用意图)
我也尝试过这样做:
public boolean VitalsDisplay(){ if (CaseNumber == 1){
ChestPain1 CaseInfoToCall = new ChestPain1(); } else if (CaseNumber ==2){ ChestPain2 CaseInfoToCall = new ChestPain2(); } ClassInfoToCall.SetVitals(array);
//更新文本字段并显示生命体征 }
我得到一个错误:“重复的局部变量 ClassInfoToCall”。
关于如何更好地实现这一点的任何想法?
摘要:如何从一个活动中调用多个类中名称相似的函数?从哪个类调用的决定将基于 MainActivity 中设置的 int 变量。
(除非有人有更清洁的方法来做到这一点——我也完全愿意这样做!)