我想知道Android中是否可以在AndroidManifest中声明不同的活动(例如.ActivityA
和.ActivityB
)并使用相同的类文件。
这可以以某种方式实现吗?
一种可能的解决方案是基类,然后创建从该基类继承的其他类文件。但除了拥有多个类文件之外还有其他方法吗?
我的意思是,对于我需要的两个活动,代码应该几乎相同。这里和那里可能需要几个ifs
,具体取决于被调用的活动。
你会如何解决这个问题?
[编辑]
根据回答判断,我认为自己并不清楚,对此感到抱歉。 但我明确需要进行不同的活动。没有一个人通过Intents传递不同的值。
答案 0 :(得分:0)
答案 1 :(得分:0)
取决于您希望如何访问活动。您是否根据应用程序中的某些逻辑创建了不同的Activity子类?他们是否需要从您的应用程序外部响应不同的Intent?如果是第一种情况,您可能很容易重用一个Activity类,并在您通过Intent的Bundle中传递条件信息(您正在寻找ifs
此处和那里的东西)。否则,您可能最适合在自己的文件中创建单独的Activity子类。
为什么要关注每个文件的多个类?
答案 2 :(得分:0)
您可以使用常用功能创建abstract class CommonActivity extends Activity
,活动A和B都将扩展此功能。在清单中你必须提到A和B,没有共同的。
答案 3 :(得分:0)
我的意思是,对于我需要的两个活动,代码应该几乎相同。根据所调用的活动,可能需要在这里和那里使用几个ifs。
如果根据您调用的内容和方式,只需要进行少量更改,则可以使用Intent将值传递给它来使用相同的Activity类。假设您为“A”类型调用“CommonActivity”,则在调用“CommonActivity”时使用:
Intent intent = new Intent(this, CommonActivity.class);
intent.putExtra("calledForType", "A");
在您的CommonActivity中:
String calledForType = "";
public void onCreate(Bundle savedInstanceState) {
......
calledForType = this.getIntent().getStringExtra("calledForType");
calledForType = calledForType.toUpper(); // Better for comparing later
}
现在,无论你需要处理使用if的不同之处:
if (calledForType.equals("A")) {
// Do This For A
} else if (calledForType.equals("B")) {
// Do this for B
}
// Do this for common
这样,您可以处理N个活动。