在Android中,我可以使用相同的类文件进行不同的活动吗?

时间:2012-02-03 13:47:55

标签: android class android-activity

我想知道Android中是否可以在AndroidManifest中声明不同的活动(例如.ActivityA.ActivityB)并使用相同的类文件。

这可以以某种方式实现吗?

一种可能的解决方案是基类,然后创建从该基类继承的其他类文件。但除了拥有多个类文件之外还有其他方法吗?

我的意思是,对于我需要的两个活动,代码应该几乎相同。这里和那里可能需要几个ifs,具体取决于被调用的活动。

你会如何解决这个问题?

[编辑]

根据回答判断,我认为自己并不清楚,对此感到抱歉。 但我明确需要进行不同的活动。没有一个人通过Intents传递不同的值。

4 个答案:

答案 0 :(得分:0)

  

一种可能的解决方案是基类,然后创建其他类   从该基类继承的文件。

  • 这是最好的实施方式。
  

这里和那里可能需要几个ifs,具体取决于   被呼叫的活动。

答案 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个活动。