Адаптер Listview не работает из-за фрагментов

Я думаю, что из-за фрагментов мне нужно использовать getActivity() вместо этого. Но все равно выдает фатальную ошибку и не работает. Помогите, заранее спасибо...

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

person SerhatCan    schedule 30.10.2013    source источник


Ответы (1)


Я много борюсь с этой проблемой!! Проблема заключается в жизненном цикле фрагмента/активности. В onCreateView, если фрагмент является первым из вашей активности, активность еще не существует... Если вы попытаетесь отладить или опубликовать журнал, я думаю, что ошибка является NullPointerException на getActivity ()

Быстрый и грязный трюк:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    /* All the code that need getActivity() */
}
person phemt.latd    schedule 30.10.2013
comment
Найдите простой трюк в моем редактировании, но это не окончательное решение. С большим количеством фрагментов это может иметь некоторые проблемы. Если в вашей деятельности есть только один фрагмент сына, это быстрый обходной путь. - person phemt.latd; 30.10.2013
comment
Спасибо, но у меня это не сработало, как вы сказали, потому что у меня есть 3 фрагмента, и этот фрагмент мой второй. - person SerhatCan; 31.10.2013
comment
ОК, попробуйте с этим, расскажите о той же проблеме, решение состоит в том, чтобы переместить весь код, связанный с getActivity(), в onCrate: stackoverflow.com/questions/11439392/ - person phemt.latd; 31.10.2013
comment
Я тоже пробовал, но тоже не работает. Я сдался и использую таб-хост. Спасибо за ответ - person SerhatCan; 31.10.2013