-1

我试图创建一个与firebase聊天,试图让添加的用户朋友ListView,但是当我把.setAdapter(),它说我有一个Java。 .setAdapter行上的lang.NullPointerException。Android ArrayAdapter 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 methos在另一个类,如下所示:

 Contato contato = new Contato(); 
             contato.setidUser(idContact); 
             contato.setEmail(emailContact); 
             contato.setNome(usuarioContato.getNome()); 
      ContatosFragment contact = new ContatosFragment(); 
              contact.insertContact(usuarioContato.getNome()); 
System.out.println("nome usuario: "+usuarioContato.getNome()); 

我不知道如何解决它,如果有人知道, 感谢

已更新

我只是改变了我的insertContact方法(因为这个问题看起来就像是它里面一个ArrayAdapter变量):

public String insertContact(String nomeContato) { 
    arraylist_nomes = new ArrayList<String>(); 
    arraylist_nomes.add(nomeContato); 
    System.out.println("nomes_array: " + arraylist_nomes); 

    adapter_nomes = new ArrayAdapter<String>(
      getContext().getApplicationContext(), 
      android.R.layout.simple_list_item_2, 
      android.R.id.text2, 
      arraylist_nomes); 

    return nomeContato; 
} 
+0

请发布你的异常栈跟踪。你的fragment.contatos.xml也可能有用。 –

+0

你的'listview'为空检查下面的答案.. – rafsanahmad007

回答

1

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; 
} 

你必须得到ListView从当前的布局视图中未从getActivity()其给出一个空引用

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

只是试图做到这一点,但现在它告诉我,我的 adapter_nomes在我的insertContact方法内是null,也许我通过错误的therms。 – 4ury0n

+0

而不是'getContext()'尝试使用'getActivity()'。此外,如果你以前的问题解决..标记答案为正确..谢谢你 – rafsanahmad007

+0

仍然没有,现在正在工作... tks 4帮助 – 4ury0n

0

中onCreateVIew做到这一点()

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); 

试图找到在胡亚蓉布局,而不是片段布局列表视图。因此你得到一个空指针。您的列表视图参考​​为空。

+0

确实让我知道它是否工作 – shreyas

+0

Tks的帮助,我只是尝试了你和@ rafsanahmad007建议,但仍然没有。现在它似乎是我的array_adapter变量是null。在我的inserContact方法里面,我想知道如果我以错误的方式传递字符串。 – 4ury0n

相关问题