類繼承 SherlockFragmentActivity,在 IDE 重寫方法提示中找不到 onCreate(),但能看到 onDestroy()。
SherlockFragmentActivity 是 **ActionBarSherlock** 庫 (已停止維護) 提供的類,其繼承鏈為:
SherlockFragmentActivity → FragmentActivity → Activity
FragmentActivity (來自 Support Library v4) **定義了 onCreate(Bundle) 方法**。IDE 應能識別並提示重寫。
| 原因 | 解決方法 |
|---|---|
| 庫未正確引入/編譯 | 檢查 build.gradle 依賴,確保 actionbarsherlock 或對應 support library 已編譯 |
| IDE 緩存/索引問題 | File → Invalidate Caches / Restart,勾選所有選項重啟 |
| 類繼承關係寫錯 | 確認 extends SherlockFragmentActivity 拼寫正確,無多繼承 |
| 方法簽名不匹配 | 手動輸入 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } |
| 使用了舊版 ABS 與新版 Support Library 混合 | ActionBarSherlock 已棄用,**強烈建議遷移至 AppCompatActivity** |
ActionBarSherlock 自 2013 年停止維護。現代 Android 開發應使用:
// build.gradle
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.fragment:fragment:1.6.1'
// 代碼
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 使用 getSupportActionBar() 獲取 ActionBar
}
}
SherlockFragmentActivity → AppCompatActivity (支援 Fragment)getSupportMenuInflater() → getMenuInflater()getSherlockActivity() → this (Activity 本身)xmlns:app="https://schemas.android.com/apk/res-auto",屬性用 app:showAsAction若維護舊專案必須用 ABS,嘗試 **Invalidate Caches/Restart** 或手動寫入 onCreate。新專案或重構時,**務必遷移至 AndroidX AppCompat**,獲得持續更新、Material Design 支援、生命周期一致性等保障。