2016-10-15 48 views
-2

我打算在片段上放一些(测试)listview,但应用程序立即崩溃。这是代码。'void android.widget.TextView.setText(java.lang.CharSequence)'null对象引用

public class ListPassword extends Fragment { 

private String accountID , masterUsername; 
private ListView lv; 
private TextView masterUsernameTXT; 
private String[][] showingData; 
String[] title = { "a" , "b" , "c" , "d" , "e" }; 
String[] description = { "aaa" , "bbb" , "ccc" , "ddd" , "eee" }; 
String[] updateDate = { "000" , "111" , "222" , "333" , "444" }; 
int recordRow = 0; 

public static ListPassword newInstance() { 
    ListPassword fragment = new ListPassword(); 
    return fragment; 
} 

public ListPassword() { } 

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_listpassword, container, false); 

    String[] title = { "a" , "b" , "c" , "d" , "e" }; 
    String[] description = { "aaa" , "bbb" , "ccc" , "ddd" , "eee" }; 
    String[] updateDate = { "000" , "111" , "222" , "333" , "444" }; 

    lv = (ListView)rootView.findViewById(R.id.listview_password); 
    SpinnerAdapt adapter = new SpinnerAdapt(getActivity(),title, description, updateDate); 
    lv.setAdapter(adapter); 

    return rootView; 
} 

我试图通过读取logcat来解决它,发现了以下错误。

致命异常:主 工艺:com.example.new_ang_ja_kai_la.masterpassword,PID:21591 显示java.lang.NullPointerException:尝试调用虚拟方法“无效 android.widget.TextView.setText(java.lang中.CharSequence)”对空 对象引用 在com.example.new_ang_ja_kai_la.masterpassword.SpinnerAdapt.getCustomView(SpinnerAdapt.java:63)

和SpinnerAdapt是如下(我coppied这个从我的朋友)

public class SpinnerAdapt extends BaseAdapter { 

    private Activity activity; 
    private String[] title; 
    private String[] description; 
    private String[] updateDate; 
    // 
    public SpinnerAdapt(Activity activity, String[] title, String[] description, String[] updateDate) { 
     this.activity = activity; 
     this.title = title; 
     this.description = description; 
     this.updateDate = updateDate; 
    } 

    @Override 
    public int getCount() { 
     return title.length; 
    } 

    @Override 
    public Object getItem(int i) { 
     return i; 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     return getCustomView(i, view, viewGroup); 
    } 

    public View getCustomView(int position, View convertView, ViewGroup parent) { 

     holder holder; 
     if (convertView == null) { 
//   LayoutInflater inflater = (activity).getLayoutInflater(); 
      LayoutInflater inflater = (LayoutInflater)activity.getSystemService 
        (Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.item_listview_storedpassword,null); 
      holder = new holder(convertView); 
      convertView.setTag(holder); 

     } else { 
      holder = (holder) convertView.getTag(); 
     } 
     holder.rowTitle.setText(title[position]); 
     holder.rowDescription.setText(description[position]); 
     holder.rowUpdateDate.setText(updateDate[position]); 
     return convertView; 
    } 
    public class holder{ 
     private TextView rowTitle; 
     private TextView rowDescription; 
     private TextView rowUpdateDate; 
     public holder(View v){ 
      TextView rowTitle= (TextView) v.findViewById(R.id.passwordTitle); 
      TextView rowDescription = (TextView) v.findViewById(R.id.passwordDescription); 
      TextView rowUpdateDate = (TextView) v.findViewById(R.id.passwordDescription); 
     } 
    } 

} 

当我调试了这个。它说,...

错误的线路上出现 “LV = (ListView控件)rootView.findViewById(R.id.listview_password);”

它表明调试完成时,lv的值为空。

我不知道如何解决它,因为我已经检查过R.id.listview_password是正确的参考(按Ctrl +单击它),所以我可以把指针已经。

我已经检查了解决方案,但没有任何可以帮助我。

+0

实际上,在SpinnerAdapt.java –

回答

0

您可以在错误消息中看到您的应用程序崩溃在SpinnerAdapter类的第63行。所以请张贴这个类的代码,以便我们可以帮助你。

编辑: 尝试没有持有人:

if (convertView == null) { 
    LayoutInflater inflater = LayoutInflater.from(activity); 
    convertView = inflater.inflate(R.layout.item_listview_storedpassword, parent, false); 
} 

TextView rowTitle= (TextView) convertView.findViewById(R.id.passwordTitle); 
TextView rowDescription = (TextView) convertView.findViewById(R.id.passwordDescription); 
TextView rowUpdateDate = (TextView) convertView.findViewById(R.id.passwordDescription); 

if(rowTitle != null) rowTitle.setText(title[position]); 
if(rowDescription != null) rowDescription.setText(description[position]); 
if(rowUpdateDate != null) rowUpdateDate.setText(updateDate[position]); 

return convertView; 
+0

的63线,其在该行“LV =(ListView中)rootView.findViewById(R发生错误发生错误.id.listview_password);” –

+0

^ 对不起,立即输入。 我找不到编辑按钮。 Sry; - ; 你问的代码将在下一个评论部分很快。 Thx帮助 –

+0

我已经编辑帖子。 Thx为您的支持 –

相关问题