2016-10-15 16 views
-2

私のフラグメントにいくつかの(テスト)リストビューを入れようとしていますが、アプリケーションがすぐにクラッシュしました。これがコードです。nullオブジェクトリファレンスのvoid android.widget.TextView.setText(java.lang.CharSequence) '

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 com.example.new_ang_ja_kai_la.masterpassword.SpinnerAdapt.getCustomViewにヌル オブジェクト参照 上.CharSequence)」(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 = (リストビュー)rootView.findViewById(R.id.listview_password);" それはエラーが発生した行で

...と言います

は完了デバッグ時LVの値がNULLであることを示しました。

私は既にR.id.listview_passwordが正しい参照(Ctrl +クリックで)であることを確認しているので、解決方法はわかりません。すでにポインタを置いていた可能性があります。

私は解決策をチェックアウトしましたが、何も私を助けません。

+0

は実際には、エラーはエラーがライン「LV =(リストビュー)rootView.findViewById(Rで発生した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行で発生しました.id.listview_password); " –

+0

^ すぐに申し訳ありません。 編集ボタンが見つかりません。 Sry; - ; お願いしたコードはすぐに次のコメントセクションに表示されます。助けを求めるThx –

+0

私はすでに投稿を編集しています。あなたのサポートのためのThx –

関連する問題