gpt4 book ai didi

android - 从 Activity 创建 fragment 时getView返回null

转载 作者:IT老高 更新时间:2023-10-28 13:24:50 24 4
gpt4 key购买 nike

我有一个可以工作的平板电脑应用程序,现在我也在尝试在手机上进行工作。在一张表上,屏幕上有两个 fragment ,一个是列表 fragment ,一个是细节 fragment 。在手机上时,列表 fragment 会出现,并在按下列表项时创建一个新 Activity 。此 Activity 只是在 onCreate() 方法中创建 fragment 并将其提交到屏幕,如下所示。

// Place an DeallDetailsFragment as our content pane
DealDetailsFragment f = new DealDetailsFragment();
getFragmentManager().beginTransaction().add(android.R.id.content, f).commit();
getFragmentManager().executePendingTransactions();

这按预期工作,但是在此 Activity 中,我需要告诉 fragment 要加载和显示哪些细节。在我的 DealDetailsFragment 类中,我有一个 updateDeal() 方法,它按如下方式更新内容。

if (deal==null) { // could be null if user presses the loading deals list item before it loads
return;
}
this.deal=deal;
if (dealTitle==null) { // get the view objects only once
holder = new ViewHolder();
holder.dealHeat=(TextView) getView().findViewById(R.id.dealDetails_heat_textView);
holder.dealPrice=(TextView) getView().findViewById(R.id.dealDetails_price_textView);
holder.dealRetailer=(TextView) getView().findViewById(R.id.dealDetails_retailer_textView);
holder.dealTitle=(TextView) getView().findViewById(R.id.dealDetails_title_textView);
holder.dealDesc=(TextView) getView().findViewById(R.id.dealDetails_desc_textView);
holder.goToButton= (LinearLayout) getView().findViewById(R.id.dealDetails_goToDeal);
holder.dealImage=(ImageView) getView().findViewById(R.id.dealDetails_imageView);
holder.postedBy=(TextView) getView().findViewById(R.id.dealDetails_poster_textView);
holder.datePosted=(TextView) getView().findViewById(R.id.dealDetails_date_textView);
当应用程序在只显示一个 fragment 的手机上运行时,

getView() 返回 null。

有什么想法吗?遗憾的是,网上提供的 fragment 示例并不多。

最佳答案

移动您的方法调用以在 onCreateView 期间执行,并使用您正在膨胀的 View 而不是 getView() 进行引用。有关更多信息,请参阅 fragment 生命周期:https://developer.android.com/guide/components/fragments.html#Creating

getView() 的文档解释了为什么它在 onCreateView(LayoutInflater, ViewGroup, Bundle) 返回之前返回 null:

getView() Get the root view for the fragment's layout (the one returned by onCreateView(LayoutInflater, ViewGroup, Bundle)), if provided.

https://developer.android.com/reference/android/app/Fragment.html#getView()

关于android - 从 Activity 创建 fragment 时getView返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com