【问题标题】:Undefined Constructor in androidandroid中未定义的构造函数
【发布时间】:2014-12-05 04:57:26
【问题描述】:

我正在制作一个处理片段的应用程序,但我不断收到构造函数的未定义错误。

`

public class ClientFragment extends Fragment {
    private static final ClientFragment This = null;
    final ClientFragment context = This;
    private static String TAG = "This thing here";
    private static final String DIALOG_IMAGE = "image";
    private static final int REQUEST_PHOTO = 1;
    static final String EXTRA_MEM_ID = "com.example.project2.memID";

    private Scrap mScraps;
    Uri imageFileUri;



    public static ClientFragment newInstance(UUID memID) {
        Bundle args = new Bundle();
        args.putSerializable(EXTRA_MEM_ID, memID);
        ClientFragment fragment = new ClientFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //this snags the UUID sent from MainActivity and tosses it to BookMarks
        UUID memId = (UUID)getArguments().getSerializable(EXTRA_MEM_ID);
        mScraps = BookMarks.get(getActivity()).getScraps(memId);
}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent,
    Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_scraps, parent, false);





    final ListView mListView= (ListView)v.findViewById(R.id.listview);
    ScrapAdapter adapter = new ScrapAdapter(mScraps);

    mListView.setAdapter(adapter); //setListAdapter sets the adapter to a specific listview

return v;
}


    private static final int TAKE_PICTURE_REQUEST = 0;


    private class ScrapAdapter extends ArrayAdapter<Scrap> {
        public ScrapAdapter(ArrayList<Scrap> scraps) {
            super(getActivity(), 0, scraps);
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // If we weren't given a view, inflate one
            if (convertView == null) {
                convertView = getActivity().getLayoutInflater().inflate(R.layout.list_item_memory, null);
            }
            // Configure the view 
            Scrap c = getItem(position);
            //shows title
            TextView titleTextView =(TextView)convertView.findViewById(R.id.list_item_titleTextView);
            titleTextView.setText(c.getTitle());
            //shows date memory was made
            TextView dateTextView =(TextView)convertView.findViewById(R.id.list_item_dateTextView);
            dateTextView.setText(c.getDate().toString());
            return convertView;
        }
    }}`

错误来自ScrapAdapter adapter = new ScrapAdapter(mScraps); 特别是new ScrapAdapter(mScraps);

我收到的错误是“构造函数 ClientFragment.ScrapAdapter(Scrap) 未定义”

【问题讨论】:

  • 您需要将 ArrayList 传递给 Adapter 构造函数,但您传递的是单个 Scrap 对象

标签: java android constructor fragment undefined


【解决方案1】:

您的构造函数接受ArrayList&lt;Scrap&gt; 作为参数

public ScrapAdapter(ArrayList<Scrap> scraps)

但您将 Scrap 对象传递给它

ScrapAdapter adapter = new ScrapAdapter(mScraps);

【讨论】:

    【解决方案2】:

    要么将 Scrap 的 ArrayList 传递给 ScrapAdapter:

    ArrayList<Scrap> mScraps;
    ScrapAdapter adapter = new ScrapAdapter(mScraps);
    

    或者将 ScrapAdapter 构造函数参数 ArrayList 改为 Scrap :

    public ScrapAdapter(Scrap scraps) {
       super(getActivity(), 0, scraps);
    }
    

    【讨论】:

      【解决方案3】:

      您的构造函数需要ArrayList

      public ScrapAdapter(ArrayList<Scrap> scraps)
      

      但是您传递的是Object,而不是ObjectArrayList

      private Scrap mScraps;
      ScrapAdapter adapter = new ScrapAdapter(mScraps);
      

      也许您需要做的是创建ArrayListScrap 并传递它。或者,您可能想更改构造函数的参数以接收Scrap 而不是ArrayList

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-11
        • 2020-09-30
        • 1970-01-01
        相关资源
        最近更新 更多