【问题标题】:Listview adapter does not working because of the fragments由于碎片,Listview 适配器无法正常工作
【发布时间】:2013-10-30 14:07:25
【问题描述】:

我认为由于碎片,我需要使用 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);

【问题讨论】:

    标签: android android-fragments android-listfragment


    【解决方案1】:

    我经常和这个问题作斗争!! 问题出在片段/活动生命周期上 如果片段是您的第一个活动,则在 onCreateView 中,该活动尚不存在... 如果您尝试调试或发布日志猫,我认为错误是 getActivity() 上的 NullPointerException

    快速而肮脏的技巧:

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

    【讨论】:

    • 在我的编辑中找到一个简单的技巧,但这不是最终的解决方案。随着更多的片段,这可能会有一些问题。如果您的活动只有一个子片段,这是一种快速的解决方法
    • 谢谢,但它对我不起作用,因为我有 3 个片段,这个片段是我的第二个。
    • OK 试试这个,说同样的问题,解决方法是将所有与getActivity()相关的代码移到onCrate中:stackoverflow.com/questions/11439392/…
    • 我也试过了,但也没有用。我放弃并使用标签主机。谢谢你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2021-08-19
    • 2021-10-01
    • 1970-01-01
    • 2020-12-31
    相关资源
    最近更新 更多