我有一个类(它是我的主要活动),它已经扩展了其他类:
public class AdvancePreferences extends CustomPreferences
我想用v7 ActionBar。根据这个站点:https://developer.android.com/training/basics/actionbar/setting-up.html,我需要扩展ActionBarActivity。看起来我这里需要多重继承:
public class AdvancePreferences extends CustomPreferences extends ActionBarActivity
如何解决此问题?我不想失去首选项功能。
-更多细节:我不确定这是否重要,但是:我的AdvancePreferences扩展了自定义类CustomPreferences。CustomPreferences扩展了PreferenceActivity并实现了OnSharedPreferenceChangeListener。现在,我不仅需要AdvancePreferences扩展CustomPreferences,还需要扩展ActionBarActivity。
发布于 2015-04-04 01:32:05
Java不允许多重继承。
顺便说一句,您可以让它首先从ActionBarActivity
扩展(也许您可以将该类用于更多使用ActionBar
的活动),然后再次扩展该类以使用首选项。
使用这种方法,继承树将是:public class BaseActionBarActivity extends ActionBarActivity
(这可以用于更多活动) public class PreferencesActivity extends BaseActionBarActivity
(这完全集中在Preferences
做的任何事情上)
另一方面,如果你想使用安卓的PreferencesActivity
方法,你可以使用Fragments
来处理,但我不知道你到底在做什么,Preferences
类是做什么的。
顺便说一下,查看以下链接可以获得更多信息(在需要使用PreferencesFragment/Activity的情况下):PreferenceFragment android和PreferenceActivity
发布于 2015-04-04 03:38:44
正如在SekthDroid的回答中所提到的,你不能从两个类继承。这里的方法是扩展ActionBarActivity,而不是使用PreferenceActivity,而是将您的首选项相关逻辑放入扩展PreferenceFragment的片段中。
这是实现这一点的推荐方式,除非你还在为预蜂窝设备进行开发:
在HONEYCOMB这个类之前,PreferenceActivity只允许显示一组首选项;现在应该可以在新的PreferenceFragment类中找到此功能。如果您在旧模式下使用PreferenceActivity,这里的文档适用于这里不推荐使用的API。
http://developer.android.com/reference/android/preference/PreferenceActivity.html
PreferenceFragments的使用非常相似,将您的逻辑从CustomPreferences活动类转移到CustomPreferences片段类应该很简单。
因此,整个层次结构将如下所示:
您当前在AdvancePreferences中拥有的所有额外首选项逻辑都将放入AdvancePreferencesFragment中,而AdvancePreferencesActivity只是一个将AdvancePreferencesFragment作为片段添加的基本活动:
http://developer.android.com/training/basics/fragments/creating.html
https://stackoverflow.com/questions/29435841
复制相似问题