首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android SherlockFragmentActivity 找不到 onCreate 方法解決

     編輯:程式設計綜合問答

問題現象

類繼承 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**

現代替代方案: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 本身)
  • 菜單 XML 命名空間 xmlns:app="https://schemas.android.com/apk/res-auto",屬性用 app:showAsAction

總結

若維護舊專案必須用 ABS,嘗試 **Invalidate Caches/Restart** 或手動寫入 onCreate。新專案或重構時,**務必遷移至 AndroidX AppCompat**,獲得持續更新、Material Design 支援、生命周期一致性等保障。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved