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

Android Fragment 佈局載入:重寫 onCreateView 而非 onCreate 呼叫 setContentView

     編輯:程式設計綜合問答

錯誤

Fragment 中呼叫 setContentView(R.layout.xxx) 編譯錯誤:Fragment 沒有此方法。

正確生命週期

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // 1. 膨脹佈局
    View rootView = inflater.inflate(R.layout.activity_googlev2, container, false);
    
    // 2. 初始化 View(用 rootView.findViewById)
    textView = rootView.findViewById(R.id.autoCompleteTextView1);
    // ...
    
    // 3. 返回根視圖
    return rootView;
}

// 若需在 onCreate 中初始化非 View 邏輯
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 這裡不能操作 View
}

關鍵差異

ActivityFragment
setContentView() 在 onCreateinflater.inflate() 在 onCreateView
findViewById()rootView.findViewById()
單一佈局可動態決定返回哪個佈局

ViewBinding 現代寫法

private FragmentGoogleBinding binding;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    binding = FragmentGoogleBinding.inflate(inflater, container, false);
    // binding.textView...
    return binding.getRoot();
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    binding = null; // 避免記憶體洩漏
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved