从活动创build片段时,getView返回null
我有一个工作的平板电脑应用程序,我现在正在尝试在手机上工作。 在一张桌子上,在屏幕上有两个片段,一个列表片段和一个细节片段。 在电话上显示列表片段,并在按下列表项目时创build新的活动。 这个活动只是在onCreate()方法中创build片段,并按如下方式提交给屏幕。 
 // Place an DeallDetailsFragment as our content pane DealDetailsFragment f = new DealDetailsFragment(); getFragmentManager().beginTransaction().add(android.R.id.content, f).commit(); getFragmentManager().executePendingTransactions(); 
 这是按预期工作,但是从这个活动中我需要告诉片段什么细节加载和显示。 在我的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); 
 当应用程序在仅显示一个片段的电话上运行时, getView()返回null。 
有任何想法吗? 不幸的是,网上没有很多的片段例子。
 移动你的方法调用,在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();
 将方法移动到onCreateView()没有帮助me.so …创build一个全局variablesmView 
  protected View mView; 
并在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; } 
 并用mViewreplace所有的getView() 
您必须检查Android生命周期以了解为什么onAttach(…)函数为null。
在创build片段时调用的第一个函数是onAttach() ,但实际上没有创build视图。 这就是为什么当你试图在这个调用中访问时返回null。
下一个函数是onCreate() …但是没有创build视图!!!!
被调用的第三个函数是onCreateView() ,在这里你必须指出哪个视图是附加在这个片段上的….只有在这个调用中,视图对象存在并且可以被访问。
阅读并了解整个生命周期。
问候
 你可以通过将你的代码放在你应该覆盖的onViewCreated()方法中来解决这个问题。 不要忘记调用super() 。 
 它基本上是空的,因为你在视图被充气之前调用了getview() 。 创build一个View对象,并使用inflater填充,然后find你的UI元素看到下面的代码 
  View view = inflater.inflate(R.layout.fragment_albumslist, container, false); TextView t= (TextView)view.findViewById(R.id.txtTest); t.setText(strtext); return view; 
因为onCreate()在onCreateView()之前被调用,不pipe你是否在onCreateView()中膨胀一个视图,你都不会通过onCreate()中的getView()获得任何东西,因为那时候onCreate()还没有被调用 。

- 不应该Android AccountManager在每个App / UID基础上存储OAuth令牌吗?
- 不针对最新版本的Android
- 如何在android的webview中播放video?
- 以编程方式向recyclerview添加一个新项目?
- android.graphics.drawable.ColorDrawable不能转换为android.support.v7.widget.RoundRectDrawableWithShadow
- EditText的首字母大写
- 如何在固定的时间间隔后重复执行Async任务
- 从Java代码中指定DIP尺寸的正确方法是什么?
- Android在WebView中调用JavaScript函数