2013-10-30 29 views
1

我認爲由於片段,我需要使用getActivity()而不是這個。但它仍然有一個致命的錯誤,並且不起作用。請幫幫忙,在此先感謝...Listview適配器由於片段而不工作

public class TabFragment2 extends Fragment { 


ListView listView; 
String[] ids; 

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

View V = inflater.inflate(R.layout.tab_frag2_layout, container, false); 

     _audioModel.LoadModel(); 
     listView = (ListView)V. findViewById(R.id.lsAudio); 
     String[] ids = new String[_audioModel.Audios.size()]; 
     for (int i= 0; i < ids.length; i++){ 

      ids[i] = Integer.toString(i+1); 
     } 

     _audioAdapter adapter = new _audioAdapter(getActivity(),R.layout.audio_item, ids); 
     listView.setAdapter(adapter); 

這裏是我的_audioAdapter.java代碼

public class _audioAdapter extends ArrayAdapter<String> { 

private final Context context; 
private final String[] Ids; 
private final int rowResourceId; 

public _audioAdapter(Context context, int textViewResourceId, String[] objects) { 

    super(context, textViewResourceId, objects); 

    this.context = context; 
    this.Ids = objects; 
    this.rowResourceId = textViewResourceId; 

} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(rowResourceId, parent, false); 
    TextView audioName = (TextView) rowView.findViewById(R.id.textAudioName); 

回答

0

我這個問題了很多戰鬥的一部分! 問題是在片段/活動生命週期 在onCreateView如果片段是您的第一個活動,該活動還不存在... 如果您嘗試調試或發佈日誌貓,我認爲錯誤是NullPointerException異常上getActivity()

快速&骯髒的伎倆:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    /* All the code that need getActivity() */ 
} 
+0

是啊,這就是問題所在。你是如何解決這個問題的? – SerhatCan

+0

在我的編輯中找到一個簡單的技巧,但這不是最終的解決方案。 隨着更多的片段,這可能會有一些問題。 如果你的活動只有一個兒子片段,這是一個快速的解決方法 –

+1

謝謝,但它不適用於我,因爲你說,因爲我有3個片段,這個片段是我的第二個。 – SerhatCan

相關問題