Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Android ArrayAdapter NullPointerException(但不为null)_Android_Listview_Arraylist_Nullpointerexception_Android Arrayadapter - Fatal编程技术网

Android ArrayAdapter NullPointerException(但不为null)

Android ArrayAdapter NullPointerException(但不为null),android,listview,arraylist,nullpointerexception,android-arrayadapter,Android,Listview,Arraylist,Nullpointerexception,Android Arrayadapter,我正试图创建一个与firebase的聊天,试图将添加的用户添加到friends ListView,但当我放置.setAdapter()时,它表示在.setAdapter行上有一个java.lang.NullPointerException package studio.brunocasamassa.superchat.fragments; import android.content.Context; import android.os.Bundle; import android.supp

我正试图创建一个与firebase的聊天,试图将添加的用户添加到friends ListView,但当我放置.setAdapter()时,它表示在.setAdapter行上有一个java.lang.NullPointerException

package studio.brunocasamassa.superchat.fragments;


import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.google.firebase.database.DatabaseReference;

import java.util.ArrayList;

import studio.brunocasamassa.superchat.R;

import static android.R.layout.activity_list_item;
import static android.R.layout.simple_list_item_2;

/**
 * A simple {@link Fragment} subclass.
 */


public class ContatosFragment extends Fragment {

    private ListView listview_nomes;
    private ArrayList<String> arraylist_nomes;
    private ArrayAdapter<String> adapter_nomes = null;
    private DatabaseReference firebaseDatabase;


    public ContatosFragment() {
        // Required empty public constructor
    }


    public String insertContact(String nomeContato) {
        arraylist_nomes = new ArrayList<String>();
        arraylist_nomes.add(nomeContato);
        adapter_nomes = new ArrayAdapter<String>(getContext(),
                android.R.layout.simple_list_item_2,
                android.R.id.text2,
                arraylist_nomes);
        return nomeContato;
    }


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


        if (adapter_nomes == null) {
            insertContact("teste");
        }

        listview_nomes = (ListView) getActivity().findViewById(R.id.ListContatos);
        System.out.println(adapter_nomes);
> the problem:
        listview_nomes.setAdapter(adapter_nomes);


        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_contatos, container, false);

    }


}
我不知道怎么修,如果有人知道, 谢谢

更新

我刚刚更改了insertContact方法(因为问题看起来像是其中的ArrayAdapter变量):

公共字符串insertContact(字符串nomeContato){
arraylist_nomes=新的arraylist();
arraylist_nomes.add(nomeContato);
System.out.println(“nomes\u数组:“+arraylist\u nomes”);
适配器名称=新阵列适配器(
getContext().getApplicationContext(),
android.R.layout.simple\u list\u item\u 2,
android.R.id.text2,
arraylist_nomes);
返回nomeContato;
}
您的
onCreateView()
应该如下所示:

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

        View v = inflater.inflate(R.layout.fragment_contatos, container, false);
        if (adapter_nomes == null) {
            insertContact("teste");
        }

        listview_nomes = (ListView) v.findViewById(R.id.ListContatos);

        System.out.println(adapter_nomes);
        listview_nomes.setAdapter(adapter_nomes);
        return v;
}
您必须从当前布局视图而不是从提供空引用的
getActivity()
获取
ListView

 listview_nomes = (ListView) v.findViewById(R.id.ListContatos);
在onCreateVIew()中执行此操作

问题是

listview_nomes = (ListView) getActivity().findViewById(R.id.ListContatos);

尝试在活动布局而不是片段布局中查找listview。因此,您会得到一个空指针。您的listview引用为空。

请发布您的异常stacktrace。你的fragment.contatos.xml可能也很有用。你的
listview
为空检查下面的答案..刚刚尝试过这么做,但现在它告诉我insertContact方法中的适配器名称为空,可能是我传入了错误的therms。请尝试使用
getContext()
而不是
getActivity()
。如果你以前的问题解决了,请将答案标记为正确,直到没有问题,请立即解决。。。tks 4帮助我试图用这么多therms更改我的ArrayAdapter,但仍然没有任何效果:只是用itTks编辑了问题摘要。为了帮助我,我尝试了你和@rafsanahmad007提出的建议,但仍然没有任何效果。现在看来是我的array_适配器变量为null。在inserContact方法中,我想知道是否以错误的方式传递字符串。
 listview_nomes = (ListView) v.findViewById(R.id.ListContatos);
View root = inflater.inflate(R.layout.fragment_contatos, container, false);
listview_nomes = (ListView) root.findViewById(R.id.ListContatos);
listview_nomes.setAdapter(adapter_nomes);


return root;
listview_nomes = (ListView) getActivity().findViewById(R.id.ListContatos);