在 ViewPager 中获取 NullPointerException
get NullPointerException in ViewPager
public class News extends Fragment {
private View view;
private ListView listView;
private JSONObject jsonObject;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view=inflater.inflate(R.layout.news_fragment,container,false);
listView= (ListView) view.findViewById(R.id.listView);
setHasOptionsMenu(true);
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser){
if (isVisibleToUser) getActivity().getActionBar().setTitle(getResources().getStringArray(R.array.homeMenuItems)[4]);
MyCreate();
}
}
public void MyCreate(){
listView.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return 6;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
convertView=getActivity().getLayoutInflater().inflate(R.layout.news_adapter,null);
}
return convertView;
}
});
}
}
当你启动它时,你得到这个错误:
java.lang.NullPointerException
at com.EraNewGames.Elbase.homeFragments.News.setUserVisibleHint(News.java:38)
at android.support.v4.app.FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1103)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.EraNewGames.Elbase.HomeActivity.onItemClick(HomeActivity.java:92)
我意识到这个错误是如何出现的,问题误传为 listView 丢失了 link。
但是然后呢...不仅我必须使用 Fragments 是的,所以不要创建左右片段,因为每个片段都是使用 Internet 的方法。
这是额外的流量。
事实并非如此,我决定检查 window 是否处于活动状态然后使用它。
为什么 ListView
得到 NullPointerException
?
setUserVisibleHint()在onCreateView()之前被调用,因此列表视图没有被初始化。
public class News extends Fragment {
private View view;
private ListView listView;
private JSONObject jsonObject;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view=inflater.inflate(R.layout.news_fragment,container,false);
listView= (ListView) view.findViewById(R.id.listView);
setHasOptionsMenu(true);
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser){
if (isVisibleToUser) getActivity().getActionBar().setTitle(getResources().getStringArray(R.array.homeMenuItems)[4]);
MyCreate();
}
}
public void MyCreate(){
listView.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return 6;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
convertView=getActivity().getLayoutInflater().inflate(R.layout.news_adapter,null);
}
return convertView;
}
});
}
}
当你启动它时,你得到这个错误:
java.lang.NullPointerException
at com.EraNewGames.Elbase.homeFragments.News.setUserVisibleHint(News.java:38)
at android.support.v4.app.FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1103)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.EraNewGames.Elbase.HomeActivity.onItemClick(HomeActivity.java:92)
我意识到这个错误是如何出现的,问题误传为 listView 丢失了 link。 但是然后呢...不仅我必须使用 Fragments 是的,所以不要创建左右片段,因为每个片段都是使用 Internet 的方法。 这是额外的流量。 事实并非如此,我决定检查 window 是否处于活动状态然后使用它。
为什么 ListView
得到 NullPointerException
?
setUserVisibleHint()在onCreateView()之前被调用,因此列表视图没有被初始化。