2014-12-05 133 views
0

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

`

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(废)是不确定的”

+0

您需要将ArrayList传递给Adapter构造函数,但是您传递的是单个Scrap对象 – 2014-12-05 05:00:12

回答

0

您的构造函数接受的ArrayList<Scrap>作为参数

public ScrapAdapter(ArrayList<Scrap> scraps) 

但你传递一个Scrap对象给它,而不是

ScrapAdapter adapter = new ScrapAdapter(mScraps); 
0

要么通过报废的ArrayList到ScrapAdapter:

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

或更改ScrapAdapter构造函数参数的ArrayList到报废:

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

您的构造函数需要一个ArrayList

public ScrapAdapter(ArrayList<Scrap> scraps) 

但你传递一个Object,而不是ArrayListObject的:

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

也许你需要做的是建立一个ScrapArrayList并将其传递了什么。或者,也许,你想改变你的构造函数的参数来接收Scrap而不是ArrayList