我在這找不到任何東西......我想知道當我在活動中有片段時,爲什麼我不能調用getPackageName()和getContentResolver()等某些東西?Android中片段的行爲
2
A
回答
8
在附加到活動之後,從片段內部的非靜態函數進行調用。
getActivity().getPackageName();
getActivity().getContentResolver();
正如您的評論者所述,這些不是片段函數,您必須獲取contextWrapper實例。
+0
這應該被標記爲答案。 – Harry 2014-11-06 02:53:40
1
因爲根據this documentation,您提到的方法是Context類的方法。 Activity是Context的一個子類,因此它有這些方法可用。片段,但是,不是。有兩種方法可以從片段中獲得這些方法:
第一個選項:片段被連接後(它的onAttach()方法已被調用),您可以使用getActivity()方法獲取活動它已被附加到。然後你可以使用getPackageName()和getContentResolver()。如:getActivity()。getPackageName()。爲了更加安全,你可能想要做的:
Activity myActivity = getActivity();
if (myActivity != null)
{
myActivity.getPackageName();
myActivity.getContentResolver();
}
else
{
//deal with the null problem
}
第二個選項:在onCreateView()方法,您的片段將尚未附着,所以你不能用上面的方法。您可以使用LayoutInflater來獲取視圖。然後在視圖上調用getContext()。如:
View myView = inflater.inflate(R.layout.my_fragment_layout, container, false);
myView.getContext().getPackageName();
myView.getContext().getContentResolver();
相關問題
- 1. Android片段執行
- 2. android pager片段意外行爲
- 3. 片段後android中的片段
- 4. Android - 片段中的對話框片段
- 5. Android中的片段 - 片段通信
- 6. Android -replace運行片段
- 7. Android ListView中片段
- 8. 如何更改Android片段中後退按鈕的行爲
- 9. 片段android片段調用
- 10. Android:將卡片設計爲片段
- 11. CollapsingToolbarLayout在獨立片段中的行爲
- 12. 在Gmail應用中的片段行爲
- 13. 片段Backstack中的怪異行爲
- 14. AppCompatActivity類中的Android片段
- 15. tabview與Android中的片段
- 16. 片段中的Android FirebaseRecyclerAdapter
- 17. 片段中的Android ListView
- 18. 片段中的Android SharedPreferences
- 19. 片段中的Android RadioButtons
- 20. 替換片段中的Android
- 21. Android中片段的條件
- 22. Android中的動態片段
- 23. Android編程中的片段
- 24. Android中的片段和ViewPager
- 25. ListView中的片段android
- 26. Android- API中的片段8
- 27. 片段中間(二):動態添加一個片段中的行Android
- 28. 添加子片段父片段的Android
- 29. Android片段之間的片段數據
- 30. Xamarin Android調用片段內的片段
因爲這些方法不是來自片段... – Selvin 2014-11-06 02:08:45