2014-09-23 100 views
-1

当我在应用程序中使用我的按钮时,出现错误。错误NullpointerException按钮

09-23 18:29:01.242 9332-9332 /? E/AndroidRuntime:致命异常:主要 显示java.lang.NullPointerException 在foit.startingpoint.nl.androiddrawer.LocatiesFragment.onCreateView(LocatiesFragment.java:28)

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

      Button button = (Button) getView().findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent = new Intent(LocatiesFragment.this.getActivity(), SecondActivity.class); 
      startActivity(myIntent);   } 
    }); 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_locaties, container, false); 
} 
+0

在'Activity'或'fragment_locaties.xml'中xml中的'button'是否膨胀? – codeMagic 2014-09-23 16:50:05

+0

fragment_locaties.xml – ImAtWar 2014-09-23 16:51:49

回答

2

你的初始化不正确,你必须做如下代码:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

      View view = inflater.inflate(R.layout.fragment_locaties, container, false); 
      Button button = (Button) view.findViewById(R.id.button); 
      button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        Intent myIntent = new Intent(getActivity(),SecondActivity.class); 
         startActivity(myIntent); 
      } 
    }); 

    return view; 
} 

onCreateView尚未完成getView是在你的代码空,所以你必须创建一个视图并使用它。

+0

这就是为什么我在#onCreateView中充气布局并在#onViewCreated中设置视图的原因。 – 2014-09-23 16:56:31

+0

这个解决方案有一个问题,就是当你在'onCreateView'和'onViewCreated'中的其他代码中膨胀你的视图时,你必须在你的片段中保存一个视图实例,但是你的解决方案非常好 – 2014-09-23 16:59:38

+0

有人可以向我解释究竟是什么这样做和问题是什么?我是一个初学者=( – ImAtWar 2014-09-23 17:06:21

0

找到按钮ID时,不能简单地从无处获取View()。第一个布局是充气的。

View view = inflater.inflate(R.layout.fragment_locaties, container, false); 
Button button = (Button) view.findViewById(R.id.button); 
... 
return view;