2016-04-15 17 views
0

私の断片に簡単なGridviewカスタムアダプタを実装したいと思います。しかし、私はエラーの下になった:フラグメント内のカスタムGridViewアダプタ

04-15 11:35:21.064 1190-1190/amir.com.unnamed E/AndroidRuntime: FATAL EXCEPTION: main 
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{amir.com.unnamed/amir.com.unnamed.MainActivity}: java.lang.NullPointerException 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
                   at android.app.ActivityThread.access$600(ActivityThread.java:141) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
                   at android.os.Handler.dispatchMessage(Handler.java:99) 
                   at android.os.Looper.loop(Looper.java:137) 
                   at android.app.ActivityThread.main(ActivityThread.java:5103) 
                   at java.lang.reflect.Method.invokeNative(Native Method) 
                   at java.lang.reflect.Method.invoke(Method.java:525) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                   at dalvik.system.NativeStart.main(Native Method) 
                  Caused by: java.lang.NullPointerException 
                   at amir.com.unnamed.fragments.chooseCardFragment.onCreateView(chooseCardFragment.java:28) 
                   at android.app.Fragment.performCreateView(Fragment.java:1695) 
                   at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885) 
                   at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057) 
                   at android.app.BackStackRecord.run(BackStackRecord.java:682) 
                   at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435) 
                   at android.app.Activity.performStart(Activity.java:5142) 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)  
                   at android.app.ActivityThread.access$600(ActivityThread.java:141)  
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)  
                   at android.os.Handler.dispatchMessage(Handler.java:99)  
                   at android.os.Looper.loop(Looper.java:137)  
                   at android.app.ActivityThread.main(ActivityThread.java:5103)  
                   at java.lang.reflect.Method.invokeNative(Native Method)  
                   at java.lang.reflect.Method.invoke(Method.java:525)  
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)  
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                   at dalvik.system.NativeStart.main(Native Method)  

と私のフラグメントコード:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.choose_card_fragment, container, false); 

    GridView cardsGrid = (GridView) getActivity().findViewById(R.id.choosecardsGridview); 
    cardsGrid.setAdapter(new cardAdapter(rootView.getContext())); 
    return rootView; 
} 

とカスタムアダプタのコード:

public class cardAdapter extends BaseAdapter { 
Context context; 

private Integer[] mThumbIds = { 
     R.drawable.img, R.drawable.img3, 
     R.drawable.img4, R.drawable.img5, 
     R.drawable.img6, R.drawable.img7, 
     R.drawable.img2 
}; 

public cardAdapter(Context c) { 
    this.context = c; 
} 

@Override 
public int getCount() { 
    return mThumbIds.length; 
} 

@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) { 
    ImageView imga; 
    if (convertView == null) { 
     imga = new ImageView(context); 
     imga.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imga.setScaleType(ImageView.ScaleType.CENTER); 
     imga.setPadding(8, 8, 8, 8); 
    } else { 
     imga = (ImageView) convertView; 
    } 
    imga.setImageResource(mThumbIds[position]); 

    return imga; 
} 

}

私はどこ任意のアイデアを持っていません私は間違いをする。助けてくれてありがとう。

答えて

1

あなたは

View rootView = inflater.inflate(R.layout.choose_card_fragment, container, false); 

を行っている場合ではない

GridView cardsGrid = (GridView) getActivity().findViewById(R.id.choosecardsGridview); 

は実際に

GridView cardsGrid = (GridView) rootView.findViewById(R.id.choosecardsGridview); 

べきか?

+0

ありがとうございます。今はimga.setImageResource(mThumbIds [position])を参照する新しいエラーが発生しました。 cardAdapterの どうすればこの問題を解決できますか?ありがとうございました 。 – amir

+0

私はそれを修正します。ありがとうございました 。問題は描画可能だった。 – amir

関連する問題