2016-09-01 3 views
-1
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; 
    } 
} 

예외 :있는 gridview NullPointerException이 simpleAdapter

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 
+0

gridview가 아니기 때문에! 그것은 당신의 조각으로 뭔가 잘못되었습니다. 제발 당신이 대체 할 수 있습니다. android.support.v4.app.Fragment with android.app.Fragment 그리고 시도하십시오. –

+0

내가 사용하는 것은 android.support.v4.app.Fragment입니다. android.support입니다. v4.app.FragmentManager; android.support.v4.app.FragmentTransaction; – dragonrong

+0

[NullPointerException은 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it)) – xenteros

답변

1

당신은 getActivity에 대한 호출과 함께 조각 인스턴스화에 mcontext를 초기화된다. 아직 활동이 없으므로 mcontext이 null이므로 SimpleAdapter이 실패합니다.
mcontext은 필요하지 않으므로 모두 제거해야하며 문제가 발생할 수 있습니다. 대신 getActivity을 사용하십시오. 그래서 변경하십시오.

gAdapter = new SimpleAdapter(getActivity(), listitem, R.layout.fg_home_gridview_item, new String[] { "image" }, new int[]{R.id.gridview_image}); 
+0

와우, 정말 고마워. 고마워. – dragonrong