【问题标题】:Using GridView inside Fragment with ArrayAdapter<String>在 Fragment 中使用 GridView 和 ArrayAdapter<String>
【发布时间】:2014-06-13 03:37:52
【问题描述】:

我正在创建一个片段,我想在其中显示将从 StringArray 生成的简单网格视图。我不需要任何复杂的东西,基本的 ArrayAdapter 在不在片段中时可以很好地创建网格视图。但是,当我尝试运行它时,我不断收到 nullpointerexception。

public class NarrowTopicsFragment extends Fragment {

private GridView grid;
private String narrowTopic;

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

@Override
public void onActivityCreated(Bundle savedInstanceState) {


    String[] letters = new String[] { "A", "B", "C", "D", "E",
            "F", "G", "H", "I", "J",
            "K", "L", "M", "N", "O",
            "P", "Q", "R", "S", "T",
            "U", "V", "W", "X", "Y", "Z"};

    grid = (GridView) getView().findViewById(R.id.gridView1);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, letters);
    grid.setAdapter(adapter); //FWIW, this is line 37


}

}

我不得不认为这很简单,但我一辈子都想不通。

LogCat:

06-12 23:31:18.152: E/AndroidRuntime(9113): FATAL EXCEPTION: main
06-12 23:31:18.152: E/AndroidRuntime(9113): Process: com.gmail.goodwin.m.joshua.evidenceguide, PID: 9113
06-12 23:31:18.152: E/AndroidRuntime(9113): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gmail.goodwin.m.joshua.evidenceguide/com.gmail.goodwin.m.joshua.evidenceguide.EvidenceGuide}: java.lang.NullPointerException
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.ActivityThread.access$900(ActivityThread.java:161)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.os.Handler.dispatchMessage(Handler.java:102)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.os.Looper.loop(Looper.java:157)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.ActivityThread.main(ActivityThread.java:5356)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at java.lang.reflect.Method.invokeNative(Native Method)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at java.lang.reflect.Method.invoke(Method.java:515)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at dalvik.system.NativeStart.main(Native Method)
06-12 23:31:18.152: E/AndroidRuntime(9113): Caused by: java.lang.NullPointerException
06-12 23:31:18.152: E/AndroidRuntime(9113):     at com.gmail.goodwin.m.joshua.evidenceguide.NarrowTopicsFragment.onActivityCreated(NarrowTopicsFragment.java:37)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.Fragment.performActivityCreated(Fragment.java:1708)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:908)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1044)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1853)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.Activity.performCreate(Activity.java:5429)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
06-12 23:31:18.152: E/AndroidRuntime(9113):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)

【问题讨论】:

    标签: android gridview fragment android-arrayadapter


    【解决方案1】:

    试试这个

    public class NarrowTopicFragment extends Fragment {
    GridView grid;
    String narrowTopic;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    
        View rootView = inflater.inflate(R.layout.layout_narrow_topics, container,
                false);
    
        grid = (GridView) rootView.findViewById(R.id.gridView1);
    
        String[] letters = new String[] { "A", "B", "C", "D", "E",
                "F", "G", "H", "I", "J",
                "K", "L", "M", "N", "O",
                "P", "Q", "R", "S", "T",
                "U", "V", "W", "X", "Y", "Z"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, letters);
    
        grid.setAdapter(adapter);
        return rootView;
    }
    

    }

    【讨论】:

      【解决方案2】:

      gridView1 是布局文件中 GridView 的 id 吗?

      无论如何,一个更简单的解决方案是将这段代码移动到onCreateView(),即

      @Override
      public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
      {
          GridView view = (GridView) inflater.inflate(R.layout.layout_narrow_topics, container);
      
          String[] letters = new String[] { "A", "B", "C", "D", "E",
                  "F", "G", "H", "I", "J",
                  "K", "L", "M", "N", "O",
                  "P", "Q", "R", "S", "T",
                  "U", "V", "W", "X", "Y", "Z"};
      
          ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, letters);
          view.setAdapter(adapter); //FWIW, this is line 37
      
          return view;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多