Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android NullPointerException。为什么?_Java_Android - Fatal编程技术网

Java Android NullPointerException。为什么?

Java Android NullPointerException。为什么?,java,android,Java,Android,我是android编程新手,下一个问题是: 在我的fragment类中,当用户单击按钮时,我需要执行一些操作。 这是我的代码,他很简单: public class InboxFragment extends Fragment{ private ListView ll; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceS

我是android编程新手,下一个问题是: 在我的fragment类中,当用户单击按钮时,我需要执行一些操作。 这是我的代码,他很简单:

public class InboxFragment extends Fragment{
    private ListView ll;
    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.inbox_fragment, container, false);
    }

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        Button filter_bt;
        filter_bt = (Button) getView().findViewById(R.id.filter_button);
        filter_bt.setOnClickListener((OnClickListener) this);
    }
}
这是我的布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/filter_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/red"
        android:text="Filter by date"
        android:textColor="@color/white" />

</LinearLayout>
日志(2)

所有代码都很简单,按钮存在,但为什么我的应用程序会崩溃

谢谢大家。

getView()
onCreateView
返回之前返回null。在调用
onCreateView()
之前,将该片段移动到
onViewCreated

onCreate()
中,这样在尝试获取布局时就不会绘制布局

从onCreate获取代码并将其移动到
onViewCreated()


问候

你能试试这样的吗

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View content = inflater.inflate(R.layout.inbox_fragment, container, false);
    Button filter_bt;
    filter_bt = (Button) content.findViewById(R.id.filter_button);
    filter_bt.setOnClickListener((OnClickListener) this);
    return content;
}

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
}
b因为onCreate在onCreateView之前被调用。它会给您一个nullpointerexception,因为您的getView()尚未定义。

我发现了这个问题。 有正确的类别代码:

public class InboxFragment extends Fragment implements View.OnClickListener{
    private ListView ll;
    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.inbox_fragment, container, false);
    }

    public void onViewCreated(View view, Bundle state)
    {
        super.onViewCreated(view, state);
        Button filter_bt;

        filter_bt = (Button) view.findViewById(R.id.filter_button);
        filter_bt.setOnClickListener(this);
    }

    public void OnClick(View view)
    {

    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }
}

哪一行正在执行NullPointerException?您可以在问题中发布堆栈跟踪。当然可以。行内
filter_bt=(按钮)getView().findviewbyd(R.id.filter_按钮)应该是这样的:?
public View onCreateView(LayoutInflater充气机、ViewGroup容器、Bundle savedInstanceState){super.onCreate(savedInstanceState);按钮filter_bt;filter_bt=(Button)getView().findViewById(R.id.filter_按钮);filter_bt.setOnClickListener((OnClickListener)this);返回充气机.inflate(R.layout.inbox_fragment,container,false);}
no,我还有:
04-22 16:35:57.090:E/AndroidRuntime(15293):java.lang.NullPointerException
哦,我看到了问题,你正在
onCreateView()
上粘贴它,尝试覆盖
onViewCreated())
,这是在绘制布局后为我执行的函数:
filter_bt=(Button)getView().findviewbyd(R.id.filter_Button);
这不是一个解决方案。因为现在屏幕上没有我的元素(其中有我的布局文件)
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View content = inflater.inflate(R.layout.inbox_fragment, container, false);
    Button filter_bt;
    filter_bt = (Button) content.findViewById(R.id.filter_button);
    filter_bt.setOnClickListener((OnClickListener) this);
    return content;
}

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
}
public class InboxFragment extends Fragment implements View.OnClickListener{
    private ListView ll;
    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.inbox_fragment, container, false);
    }

    public void onViewCreated(View view, Bundle state)
    {
        super.onViewCreated(view, state);
        Button filter_bt;

        filter_bt = (Button) view.findViewById(R.id.filter_button);
        filter_bt.setOnClickListener(this);
    }

    public void OnClick(View view)
    {

    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }
}