应用程序在Android中使用gridview时崩溃

应用程序在Android中使用gridview时崩溃,android,Android,在我的应用程序中,我想使用导航抽屉片段中的gridView,但我的应用程序正在崩溃。 这是我的代码: public class HomeFragment extends Fragment { GridView gridView; private String[] categoryHomeGridView; private Integer[] icon={R.drawable.cat_offer_women,R.drawable.cat_offer_men,

在我的应用程序中,我想使用导航抽屉片段中的gridView,但我的应用程序正在崩溃。 这是我的代码:

public class HomeFragment extends Fragment { GridView gridView; private String[] categoryHomeGridView; private Integer[] icon={R.drawable.cat_offer_women,R.drawable.cat_offer_men, R.drawable.cat_offer_food_and_drink,R.drawable.cat_offer_electronics}; private ArrayList homeGridViewItems; private HomeGridViewListAdapter adapter; public HomeFragment(){} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); init(); return view; } private void init() { // TODO Auto-generated method stub gridView=(GridView) getActivity().findViewById(R.id.homeGridView); categoryHomeGridView=getActivity().getResources().getStringArray(R.array.category_array); homeGridViewItems=new ArrayList(); homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[0], icon[0])); homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[1], icon[1])); homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[2], icon[2])); homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[3], icon[3])); // iconHomeGridView.recycle(); adapter=new HomeGridViewListAdapter(getActivity().getApplicationContext() ,homeGridViewItems); gridView.setAdapter(adapter); } } 公共类HomeFragment扩展了片段{ GridView; 私有字符串[]categoryHomeGridView; private Integer[]icon={R.drawable.cat\u offer\u women,R.drawable.cat\u offer\u men, R.drawable.猫提供食物和饮料,R.drawable.猫提供电子产品}; 私有ArrayList homeGridViewItems; 私有HomeGridViewListAdapter; 公共HomeFragment(){} @凌驾 创建视图上的公共视图(布局、充气机、视图组容器、, Bundle savedInstanceState){ 视图=充气机。充气(R.layout.fragment\u home,container,false); init(); 返回视图; } 私有void init(){ //TODO自动生成的方法存根 gridView=(gridView)getActivity().findViewById(R.id.homeGridView); categoryHomeGridView=getActivity().getResources().getStringArray(R.array.category_数组); homeGridViewItems=new ArrayList(); 添加新的HomeGridViewItem(类别HomeGridView[0], 图标[0]); 添加新的HomeGridViewItem(类别HomeGridView[1], 图标[1]); 添加新的HomeGridViewItem(类别HomeGridView[2], 图标[2]); 添加(新的HomeGridViewItem)(类别HomeGridView[3], 图标[3]); //iconHomeGridView.recycle(); adapter=新的HomeGridViewListAdapter(getActivity().getApplicationContext()) ,homeGridViewItems); setAdapter(适配器); } } 这是事故日志

03-26 14:50:56.524: E/AndroidRuntime(2355): FATAL EXCEPTION: main 03-26 14:50:56.524: E/AndroidRuntime(2355): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.couponoffer/com.example.couponoffer.MainActivity}: java.lang.NullPointerException 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.ActivityThread.access$600(ActivityThread.java:130) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.os.Handler.dispatchMessage(Handler.java:99) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.os.Looper.loop(Looper.java:137) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.ActivityThread.main(ActivityThread.java:4745) 03-26 14:50:56.524: E/AndroidRuntime(2355): at java.lang.reflect.Method.invokeNative(Native Method) 03-26 14:50:56.524: E/AndroidRuntime(2355): at java.lang.reflect.Method.invoke(Method.java:511) 03-26 14:50:56.524: E/AndroidRuntime(2355): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 03-26 14:50:56.524: E/AndroidRuntime(2355): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 03-26 14:50:56.524: E/AndroidRuntime(2355): at dalvik.system.NativeStart.main(Native Method) 03-26 14:50:56.524: E/AndroidRuntime(2355): Caused by: java.lang.NullPointerException 03-26 14:50:56.524: E/AndroidRuntime(2355): at fragments.HomeFragment.init(HomeFragment.java:57) 03-26 14:50:56.524: E/AndroidRuntime(2355): at fragments.HomeFragment.onCreateView(HomeFragment.java:34) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.BackStackRecord.run(BackStackRecord.java:635) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.Activity.performStart(Activity.java:5017) 03-26 14:50:56.524: E/AndroidRuntime(2355): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 03-26 14:50:56.524: E/AndroidRuntime(2355): ... 11 more 03-26 14:50:56.524:E/AndroidRuntime(2355):致命异常:主 03-26 14:50:56.524:E/AndroidRuntime(2355):java.lang.RuntimeException:无法启动活动组件信息{com.example.couponoffer/com.example.couponoffer.MainActivity}:java.lang.NullPointerException 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.ActivityThread.access$600(ActivityThread.java:130) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.os.Handler.dispatchMessage(Handler.java:99)上 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.os.Looper.loop(Looper.java:137) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.ActivityThread.main(ActivityThread.java:4745)上 03-26 14:50:56.524:E/AndroidRuntime(2355):位于java.lang.reflect.Method.Invokenactive(本机方法) 03-26 14:50:56.524:E/AndroidRuntime(2355):在java.lang.reflect.Method.invoke(Method.java:511) 03-26 14:50:56.524:E/AndroidRuntime(2355):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 03-26 14:50:56.524:E/AndroidRuntime(2355):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 03-26 14:50:56.524:E/AndroidRuntime(2355):在dalvik.system.NativeStart.main(本机方法) 03-26 14:50:56.524:E/AndroidRuntime(2355):由以下原因引起:java.lang.NullPointerException 03-26 14:50:56.524:E/AndroidRuntime(2355):at fragments.HomeFragment.init(HomeFragment.java:57) 03-26 14:50:56.524:E/AndroidRuntime(2355):at fragments.HomeFragment.onCreateView(HomeFragment.java:34) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.BackStackRecord.run(BackStackRecord.java:635) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397) 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.Activity.performStart(Activity.java:5017)上 03-26 14:50:56.524:E/AndroidRuntime(2355):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 03-26 14:50:56.524:E/AndroidRuntime(2355):。。。还有11个
放置此行
gridView=(gridView)getActivity().findViewById(R.id.homeGridView)在onCreate中,按如下方式操作
gridView=(gridView)view.findviewbyd(R.id.homeGridView)因为gridview是视图的一部分。或者将视图传递给init()

像这样:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);
        init(view);
        return view;
    }

private void init(View rootView) {
        // TODO Auto-generated method stub
        gridView=(GridView) rootView.findViewById(R.id.homeGridView);
        categoryHomeGridView=getActivity().getResources().getStringArray(R.array.category_array);


        homeGridViewItems=new ArrayList();
        homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[0],
                icon[0]));
        homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[1],
                icon[1]));
        homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[2],
                icon[2]));
        homeGridViewItems.add(new HomeGridViewItem(categoryHomeGridView[3],
                icon[3]));
    //  iconHomeGridView.recycle(); 

        adapter=new HomeGridViewListAdapter(getActivity().getApplicationContext()
                ,homeGridViewItems);
        gridView.setAdapter(adapter); 

    }

gridView可能属于片段布局

所以你需要改变这个

 gridView=(GridView) getActivity().findViewById(R.id.homeGridView);

更改此项:

gridView=(GridView) getActivity().findViewById(R.id.homeGridView);
为此:

View view = inflater.inflate(R.layout.fragment_home, container, false);
gridView=(GridView) view .findViewById(R.id.homeGridView);
View view = inflater.inflate(R.layout.fragment_home, container, false);
gridView=(GridView) view .findViewById(R.id.homeGridView);