Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中,我可以让不同的活动使用相同的类文件吗?_Android_Class_Android Activity - Fatal编程技术网

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

在Android中,我可以让不同的活动使用相同的类文件吗?,android,class,android-activity,Android,Class,Android Activity,我想知道Android是否可以在AndroidManifest中声明不同的活动(比如.ActivityA和.ActivityB),并使用相同的类文件 这是可以实现的吗 一种可能的解决方案是创建一个基类,然后创建从该基类继承的其他类文件。但是除了拥有多个类文件,还有其他方法吗 我的意思是,我需要这两个活动的代码应该几乎相同。根据调用的活动的不同,可能需要在此处和此处设置两个ifs 你将如何解决这个问题 [编辑] 从回答来看,我觉得我说得不够清楚,很抱歉但我明确地需要有不同的活动。没有一个活动通过意

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

这是可以实现的吗

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

我的意思是,我需要这两个活动的代码应该几乎相同。根据调用的活动的不同,可能需要在此处和此处设置两个
ifs

你将如何解决这个问题

[编辑]


从回答来看,我觉得我说得不够清楚,很抱歉但我明确地需要有不同的活动。没有一个活动通过意图传递不同的值

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

  • 这是最好的实现
根据具体情况,可能需要这里和那里的两个ifs 但是正在调用活动

  • 考虑模式

取决于您希望如何访问活动。是否根据应用程序中的某些逻辑创建不同的活动子类?他们是否需要响应应用程序外部的不同意图?如果是第一种情况,您可能很容易重用单个活动类,并将条件信息(您正在查看的
ifs
的内容)传递到您传递给Intent的包中。否则,您可能最适合在自己的文件中创建单独的活动子类


为什么要关注每个文件的多个类?

您可以创建
抽象类CommonActivity extends Activity
,使用公共函数,Activity A和B都将扩展此类。在舱单中,你必须提到A和B,没有共同点

我的意思是,我需要这两个活动的代码应该几乎相同。不过,根据所调用的活动,这里和那里可能需要几个if

如果他们只需要根据调用的内容和方式进行少量更改,则使用相同的活动类,方法是使用Intent向其传递一个值。假设您正在为类型“A”调用“CommonActivity”,那么在调用“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个活动

我明确地需要有不同的活动(更新我的问题)。很抱歉,我不明白你的最后一个问题…你说你需要不同的显式活动,但你没有说为什么它们“在同一个类文件中”如此重要。因为代码基本相同,我不想在不同的文件中重复。常见的解决方案是使用一个基类并扩展我的活动,但我只是想知道是否有另一种方法允许我为同一个类文件声明两个活动。可能是在清单上耍了什么“把戏”之类的。我明确地需要有不同的活动(更新了我的问题)。@RicardoAmaral,如果你需要有不同的活动,那么问题出在哪里呢。最好的选择是使用BaseActivity并将其扩展到您的活动中。几乎所有的相似之处。仅在活动A…中包含所需内容。。。。这本身不是一个问题,但我不知道Android框架为开发者提供的所有可能性,我决定问问是否有更好/更简单的方法。“就这些了。”李嘉图·马拉尔,没问题,亲爱的。对于基本活动,实现它的onCreate()和其他活动在启动时以及在活动调用super.onCreate(..)中所需的所有常见内容-不一定是第一行。在我的例子1中,我对许多活动使用相同的xml文件。因此,在BaseActivity中,使用findViewById设置ContentView和Get按钮。但我已经为其他活动中的按钮添加了监听器。我还在BaseActivity中跳过了onDestroy,并调用了一个私有方法来清理组件。调用activity.finish()时,我的BaseActivity也完成了,因此会自动调用onDestroy。我想这会让您了解如何实现这两种方法。如果你仍然需要指导,请放心。我对国家模式有点困惑,我的情况到底有什么好处(也许我真的没有达到目的)。
if (calledForType.equals("A")) {
     // Do This For A
} else if (calledForType.equals("B")) {
    // Do this for B
}

// Do this for common