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

Android Service 中無法使用 findViewById:需先膨脹佈局再查找視圖

     編輯:程式設計綜合問答

Service 不提供 findViewById() 方法。若需在 Service 中操作視圖(如通知欄自訂視圖),必須先用 LayoutInflater 膨脹佈局,再對根視圖呼叫 findViewById。

正確流程

LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View rootView = inflater.inflate(R.layout.my_layout, null); // 父視圖
TextView textView = rootView.findViewById(R.id.my_text); // 在父視圖上查找
// 後續操作 textView...

適用場景

  • 建立自訂通知 RemoteViews。
  • 系統覆蓋視窗(需 SYSTEM_ALERT_WINDOW 權限)。
  • 任何非 Activity 元件需動態建立視圖樹時。

注意

Service 本身無視圖層級,setContentView 僅存在於 Activity。

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