安卓java on on参数,如参数iNIT.C++C++
可能太简单了,但我找不到正确的方法
<>在C++中,我可以编写^ {CD1>}实例化一个类,然后在init中设置一些init时间值的实例变量。
在Java中,我不知道怎么做。目前我做了以下工作:
public class SpecialScreen extends BASEScreen{
private static final int ACTIVITY_1 = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //create the instance
defineScreenType (ACTIVITY_1); //second call to set the instance variable
presentOnScreen();
}
在BASEScreen中时:
public class BASEScreen extends Activity {
private Integer activityCode; // which activity should I do?
@Override
public void onCreate(Bundle savedInstanceState) { // the creation
super.onCreate(savedInstanceState);
}
// the setting of the instance variable
public void defineScreenType(int screenID) {
activityCode = screenID;
}
这不是最好的办法。如何做得更好
谢谢
添加以显示在BASEScreen中调用SpecialScreen:
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
Intent i;
switch (item.getItemId()) {
case OTHER_PAGE_ID:
//
if (activityCode == ACTIVITY_1) {
i = new Intent(this, SpecialScreen2.class);
i.putExtra("Task", ACTIVITY_2);
startActivityForResult(i, ACTIVITY_2);
finish();
} else {
i = new Intent(this, SpecialScreen1.class);
i.putExtra("Task", ACTIVITY_1);
startActivityForResult(i, ACTIVITY_1);
finish();
}
return true;
ps我知道再也不需要额外的钱了。在我有两个特殊的Screen子类之前,我就是这样做的,并且总是用这个参数调用BASEScreen
# 1 楼答案
正确,没有C++中的“默认”语法。您必须在构造函数中执行此操作。请注意,您不需要使用setter方法,您可以将
activityCode
设置为受保护而非私有,只需执行以下操作:另一个选项是使用构建器模式来构建对象,使用构建器中的一组默认值,在请求构建对象时(需要时)覆盖这些默认值
编辑以下评论:
我为一些混淆道歉,因为我称它为“构造函数”,而它不是
如果在
BASEScreen
中,您将对protected
的访问权限从private
更改为protected
然后,您可以在
SpecialScreen
子类中访问它:# 2 楼答案
如果我正确理解你的问题。Java中的任何类都可以有一个或多个构造函数。每个参数都可以没有参数,也可以有一组您传入的参数(尽管它们都必须具有唯一的集合/顺序,以便编译器可以告诉您要使用哪个参数)
当您执行新操作时,将调用每个,例如:
BASEScreen豪猪=新的特殊屏幕();//没有参数构造函数
或
基本屏幕豪猪=新的特殊屏幕(5);//获取参数的构造函数