2015-04-03 207 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