Tôi đang trong quá trình tạo ứng dụng đầu tiên cho Android và tôi có một số Fragment
được thêm vào số Activity
của mình theo phương pháp của Activity
. Vấn đề tôi đang phải đối mặt là tôi không thể tìm thấy bất kỳ chế độ xem nào có trong số Fragment
từ phương thức onCreate()
của Activity
.Truy cập Fragment View từ hoạt động của OnCreate
Các chủ đề khác đã gợi ý rằng điều này là do Fragment
chưa được tăng cao, vì vậy findViewById()
sẽ trả về giá trị rỗng cho bất kỳ chế độ xem nào có trong số Fragment
.
Dưới đây là những gì tôi có nghĩa là:
Hoạt động:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("activity onCreate");
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
return;
}
initialiseUI(); // Fragment added to Activity
System.out.println("end of activity onCreate");
}
Fragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("fragment onCreateView");
return inflater.inflate(R.layout.event_log, container, false);
}
này in ra kết quả:
hoạt động onCreate kết thúc hoạt động onCreate mảnh onCreateView
Do lệnh này, bất kỳ nỗ lực để truy cập quan điểm của Fragment
trong Activity
'phương pháp onCreate()
s (sử dụng findViewById()
) tạo ra một NullPointerException
, như Fragment
' s onCreateView()
chỉ được gọi sau khi kết thúc các Activity
's onCreate()
.
Sử dụng FragmentManger
's executePendingTransactions()
sau khi thêm Fragment
không giúp ích.
Về cơ bản, tôi đã buộc phải đặt mã vấn đề trong Activity
'onStart()
phương pháp thay vì onCreate()
s, như onStart()
xảy ra SAU Fragment
' s onCreateView()
.
Có ai thực hành tiêu chuẩn ở đây không hay cách tôi có thể làm cho mã truy cập Xem phân đoạn của tôi hoạt động trong phương thức của Activity
?
Tại sao bạn muốn truy cập chế độ xem 'Fragment' trong phương thức' onCreate() 'của' Activity'? Có điều gì đó không ổn với desing của bạn. – biegleux
Cụ thể, sau khi thêm một Fragment vào phương thức onCreate() của Activity, tôi muốn thay đổi văn bản của một TextView chứa trong Fragment và thêm một số mục vào Spinner. Điều gì có thể sai với thiết kế của tôi? – Dan
Than cập nhật bố cục của phân đoạn của bạn trong phương thức 'onCreateView()' của 'Fragment'. Xem câu trả lời của tôi. – biegleux