package com.rong.shop.myshop.home;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import com.rong.shop.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2016/8/13.
*/
public class MyFragment_home extends Fragment {
//ViewPager
private ViewPager vpager_one;
private ArrayList<View> aList;
private Adapter_homeViewPager mAdapter;
//GridView
private GridView gridview;
private Context mcontext = this.getActivity();
private List<Map<String,Object>> listitem;
private SimpleAdapter gAdapter;
private int[] imgIds;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg_home, container, false);
//ViewPager
vpager_one = (ViewPager) view.findViewById(R.id.vpager);
aList = new ArrayList<View>();
LayoutInflater li = getLayoutInflater(null);
aList.add(li.inflate(R.layout.fg_home_viewpager_view_1, null, false));
aList.add(li.inflate(R.layout.fg_home_viewpager_view_2, null, false));
aList.add(li.inflate(R.layout.fg_home_viewpager_view_3, null, false));
aList.add(li.inflate(R.layout.fg_home_viewpager_view_4, null, false));
aList.add(li.inflate(R.layout.fg_home_viewpager_view_5, null, false));
mAdapter = new Adapter_homeViewPager(aList);
vpager_one.setAdapter(mAdapter);
//GridView
gridview = (GridView)view.findViewById(R.id.gridview);
listitem= new ArrayList<>();
imgIds = new int[]{
R.drawable.fg_home_gridview_1, R.drawable.fg_home_gridview_2,
R.drawable.fg_home_gridview_3, R.drawable.fg_home_gridview_4,
R.drawable.fg_home_gridview_5, R.drawable.fg_home_gridview_6,
R.drawable.fg_home_gridview_7, R.drawable.fg_home_gridview_8,
};
for (int i = 0; i < imgIds.length; i++) {
Map<String, Object> showitem = new HashMap<String, Object>();
showitem.put("image", imgIds[i]);
listitem.add(showitem);
}
gAdapter = new SimpleAdapter(mcontext, listitem, R.layout.fg_home_gridview_item,
new String[] { "image" }, new int[]{R.id.gridview_image});
gridview.setAdapter(gAdapter);
return view;
}
}
Exception :
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rong.shop/com.rong.shop.myshop.home.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.widget.SimpleAdapter.<init>(SimpleAdapter.java:85)
at com.rong.shop.myshop.home.MyFragment_home.onCreateView(MyFragment_home.java:75)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
at
android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:619)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at
android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at
You are initializing mcontext
in the Fragment instantiation, with a call to getActivity
. Well there is no Activity yet at that point, so mcontext
is null, therefore your SimpleAdapter
fails.
You should get rid of mcontext
altogether, as it is not needed, and can only cause issues. Just use getActivity
instead. So just change it to;
gAdapter = new SimpleAdapter(getActivity(), listitem, R.layout.fg_home_gridview_item, new String[] { "image" }, new int[]{R.id.gridview_image});