Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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-Can';在活动中不应用装饰模式?_Android_Android Intent_Android Activity_Decorator_Solid Principles - Fatal编程技术网

Android-Can';在活动中不应用装饰模式?

Android-Can';在活动中不应用装饰模式?,android,android-intent,android-activity,decorator,solid-principles,Android,Android Intent,Android Activity,Decorator,Solid Principles,我希望能够动态构建一个活动,该活动具有我们所拥有的一些功能(如防止滚动、监控互联网连接、防止方向改变等) 我们不希望必须创建包含所有功能的所有可能属性和抽象方法的抽象BaseActivity。我们将在BaseActivity的子类中有许多空函数实现,这些子类只需要实际实现其中的一些函数。更糟糕的是,如果我们想到另一种功能(要添加到BaseActivity的另一组属性和函数),我们将不得不编辑BaseActivity的每个子级以实现新的抽象函数(很可能是空的) BaseActivity继承的另一种

我希望能够动态构建一个活动,该活动具有我们所拥有的一些功能(如防止滚动、监控互联网连接、防止方向改变等)

我们不希望必须创建包含所有功能的所有可能属性和抽象方法的抽象
BaseActivity
。我们将在
BaseActivity
的子类中有许多空函数实现,这些子类只需要实际实现其中的一些函数。更糟糕的是,如果我们想到另一种功能(要添加到
BaseActivity
的另一组属性和函数),我们将不得不编辑
BaseActivity
的每个子级以实现新的抽象函数(很可能是空的)

BaseActivity
继承的另一种方法是创建只实现我们所拥有的一些功能的子类。但这将要求我们为每一个功能组合创建一个子类,即使功能很少也太多了。另外,这将导致2+个子类的大量重复代码,这些子类将实现相同的功能

所以,我想实现Decorator模式,但我认为我们从来没有实际实例化过一个新的活动。我们总是创建一个
Intent
并在其构造函数中指定
SomeActivity.class
,然后调用
startActivity(新Intent(getApplicationContext(),SomeActivity.class))

有没有办法截取活动的实际实例化,对其执行装饰器模式操作,然后让操作系统/应用程序将其放在堆栈顶部

如果没有,还有哪些方法是可行的

我们不希望必须创建一个包含所有功能的所有可能属性和抽象方法的抽象BaseActivity

您可以通过删除关键字
abstract
来完成此操作。每个关键字大约需要八次击键

有没有办法截取活动的实际实例化,对其执行装饰器模式操作,然后让操作系统/应用程序将其放在堆栈顶部

只有通过分叉Android

如果没有,还有哪些方法是可行的

创建一个非抽象的
BaseActivity
,它“包含所有可能的属性”和非抽象的“所有功能的方法”。根据需要重写子类中的方法。在有意义的地方,让子类链接到超类,这样超类就可以有子类可以扩展的默认行为

您可以在
活动
本身中看到这一点。您不必实现
onCreate()
onStart()
onResume()
onPause()
onStop()
onStoreInstanceState()
onRestoreInstanceState()
,以及许多其他方法。这些方法不是抽象的,默认实现是合理的(典型的例外是
onCreate()
)。子类可以覆盖那些需要添加功能的方法,或者在某些情况下替换现有功能(例如,
onSaveInstanceState()
可以根据需要链接到超类,也可以不链接到超类)

我们不希望必须创建一个包含所有功能的所有可能属性和抽象方法的抽象BaseActivity

您可以通过删除关键字
abstract
来完成此操作。每个关键字大约需要八次击键

有没有办法截取活动的实际实例化,对其执行装饰器模式操作,然后让操作系统/应用程序将其放在堆栈顶部

只有通过分叉Android

如果没有,还有哪些方法是可行的

创建一个非抽象的
BaseActivity
,它“包含所有可能的属性”和非抽象的“所有功能的方法”。根据需要重写子类中的方法。在有意义的地方,让子类链接到超类,这样超类就可以有子类可以扩展的默认行为


您可以在
活动
本身中看到这一点。您不必实现
onCreate()
onStart()
onResume()
onPause()
onStop()
onStoreInstanceState()
onRestoreInstanceState()
,以及许多其他方法。这些方法不是抽象的,默认实现是合理的(典型的例外是
onCreate()
)。子类可以覆盖那些需要添加功能的方法,或者在某些情况下替换现有功能(例如,
onSaveInstanceState()
可以根据需要链接到超类,也可以不链接到超类)。

我想这篇文章可以帮到你。
我认为这篇文章可以帮助你。

我考虑删除abstract关键字以删除实现需求。不过,对于想要实现某个特性的2+子类,我仍然会有重复的代码。我想我们暂时只能将就一下了。@Mickeelcaruso:“不过,对于想要实现某个功能的2+个子类,我仍然会有重复的代码。”——根据您的设置方式,大部分代码可能在共享实现中,通过组合从活动子类引用。如果没有一个具体的例子,很难说。我想删除抽象关键字来删除实现需求。不过,对于想要实现某个特性的2+子类,我仍然会有重复的代码。我想我们暂时只能满足于此了。@Mickeelcaruso:“不过,对于想要实现某个功能的2+个子类,我仍然会有重复的代码。”——根据您的设置方式,大部分代码可能在共享实现中,referec