2015-04-03 83 views
0

我有一个类(这是我的主要活动)已经扩展其他类:Java的多重继承ActionBarActivity

public class AdvancePreferences extends CustomPreferences 

我想用V7动作条。根据这个网站: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。

-----------------重要: 我用minSdkVer = 7

+0

编辑:没有意识到偏好是Android的一个,我认为这是一个自定义类。傻我。但我确实为你找到了一些与此相关的代码:https://code.google.com/p/actionbarcompat/source/browse/src/org/mariotaku/actionbarcompat/app/ActionBarPreferenceActivity.java?r=1a2c145b61b34724bb91b5ae71e4f8cec1aba274 – Guardanis 2015-04-03 17:28:46

+0

啊。嗯,这的确是自定义的......傻兮兮的:DI编辑了我的问题,所以现在应该没有疑问。抱歉。 – Malvinka 2015-04-03 19:21:53

+0

什么是CustomPreferences?它是一种偏好活动吗? – 2015-04-03 19:30:50

回答

1

Java不允许多重继承。

顺便说一句,你可以使它首先从ActionBarActivity延伸(也许你可以使用这个类更多的活动使用ActionBar),然后再次扩展该类以使用首选项。

通过这种方法,继承树将是: public class BaseActionBarActivity extends ActionBarActivity(这可以用于更多的活动) public class PreferencesActivity extends BaseActionBarActivity(这个人是完全专注于任何Preferences做)

在另一方面,如果你想要使用Android方法的PreferencesActivity,您可以使用Fragments来处理此问题,但我不确切知道您在做什么以及类是做什么的。

顺便说一句,看看这个链接,了解更多信息(在你需要使用PreferencesFragment /活动的情况下):PreferenceFragment androidPreferenceActivity

+0

非常感谢。我的偏好类是自定义类。对于轻描淡写,我感到抱歉。我不知道如何用“继承树”实现你的方法。如果我将实现新的类BaseActionBarActivity继承ActionBarActivity,然后我将使我的AdvancePreference类扩展BaseActionBarActivity,我的CustomPreference类在哪里呢?对不起,我是初学者... – Malvinka 2015-04-03 19:25:52

1

正如SekthDroid的回答,你不能从两个类继承已经提到。 这里的方法是扩展ActionBarActivity,而不是使用PreferenceActivity将您的偏好相关逻辑放入扩展PreferenceFragment的片段中。

这是为了实现这一点,除非你还在预蜂窝设备开发的推荐方式:

到蜂窝此前该类[PreferenceActivity]只允许 显示一组偏好的;现在应该在新的PreferenceFragment类中找到该功能 。如果您在旧模式下使用PreferenceActivity,则其中的文档适用于 此处的弃用API。

http://developer.android.com/reference/android/preference/PreferenceActivity.html

PreferenceFragments非常相似,使用,它应该是直着您的逻辑从CustomPreferences活动类移动到CustomPreferences片段类。

所以整个层次结构是这样的:

  • 公共类AdvancePreferencesActivity扩展ActionBarActivity
  • 公共类CustomPreferencesFragment扩展PreferenceFragment
  • 公共类AdvancePreferencesFragment扩展 CustomPreferencesFragment

所有多余的您目前在AdvancePrefer中拥有的偏好逻辑分配办法将进入AdvancePreferencesFragment,而AdvancePreferencesActivity仅仅是裸骨活动,增加了AdvancePreferencesFragment作为一个片段:

http://developer.android.com/training/basics/fragments/creating.html

+0

非常感谢。看起来有点复杂,但我会试着实现这个:) – Malvinka 2015-04-03 19:51:04

+0

实际上并非如此,它只是移动代码而不添加太多:-),但我明白,如果这听起来在开始的时候听起来不可思议。 – 2015-04-03 20:31:52

+0

好的。如果我为老设备开发,该怎么办?我不明白那是什么:“如果您在旧模式下使用PreferenceActivity,那里的文档适用于这里不赞成使用的API。”的意思是。 PreferenceFragment类存在问题,因为它会生成有关更高要求的API的错误。 – Malvinka 2015-04-06 16:17:52