ben*_*lis 58 android android-intent android-layout android-fragments android-4.0-ice-cream-sandwich
我有一个工作的平板电脑应用程序,我现在也试图在手机上工作.在表格上,屏幕上有两个片段,一个列表片段和一个细节片段.当在电话上时,列表片段出现并在按下列表项时创建新活动.此活动只是在onCreate()方法中创建片段并将其提交到屏幕,如下所示.
// Place an DeallDetailsFragment as our content pane
DealDetailsFragment f = new DealDetailsFragment();
getFragmentManager().beginTransaction().add(android.R.id.content, f).commit();
getFragmentManager().executePendingTransactions();
Run Code Online (Sandbox Code Playgroud)
这是按预期工作的,但是从这个活动中我需要告诉片段要加载和显示的细节.在我的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);
Run Code Online (Sandbox Code Playgroud)
getView() 当应用程序在只显示单个片段的手机上运行时返回null.
有任何想法吗?不幸的是,网上没有很多片段示例.
Jas*_*son 124
移动您的方法调用以在执行期间执行onCreateView,并使用您正在膨胀的视图作为参考而不是getView().有关详细信息,请参阅片段生命周期:https://developer.android.com/guide/components/fragments.html#Creating
并且其文档getView()解释了为什么它在返回之前onCreateView(LayoutInflater, ViewGroup, Bundle)返回null :
getView() 获取片段布局的根视图(onCreateView(LayoutInflater,ViewGroup,Bundle)返回的视图),如果提供的话.
https://developer.android.com/reference/android/app/Fragment.html#getView()
spa*_*key 22
移动方法onCreateView()没有帮助我.所以...创建一个全局变量mView
protected View mView;
Run Code Online (Sandbox Code Playgroud)
并在onCreateView()中
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "oncreateView");
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.activity_secure_cloud_drive_folder, container, false);
this.mView = view;
return view;
}
Run Code Online (Sandbox Code Playgroud)
和替换所有getView()与mView
| 归档时间: |
|
| 查看次数: |
80581 次 |
| 最近记录: |