2013-07-02 3 views
2

Je travaille actuellement sur une application Android, et il m'a donné tout à coup ces erreurs (il travaillait comme celui-ci, qui est le plus étrange):Comment éviter les constructeurs non-par défaut dans les fragments?

Évitez les constructeurs non par défaut dans les fragments: utiliser un défaut constructeur, plus fragment # setArguments (Bundle) au lieu

et

Ce fragment doit fournir un constructeur par défaut (un constructeur public sans argument)

Voici le code:

public DatePickerFragment(ProjectOverviewFragment list){ 
    this.list = list; 
    Calendar cal = Calendar.getInstance(); 

    date = cal.get(Calendar.DAY_OF_MONTH)+"-"+cal.get(Calendar.MONTH)+"-"+cal.get(Calendar.YEAR); 
} 
+0

Alors quel est le problème à ajouter? –

+0

Ajouter constructeur par défaut sans arguments comme: 'public DatePickerFragment() {}' –

+0

J'ai ajouté un constructeur par défaut sans arguments, ce qui semble bien. Mais il donne la même erreur sur le constructeur qui prend argument. –

Répondre

4

Vous devez appeler fragment quelque chose comme ceci:

int id; 

    Fragment newFragment = CountingFragment.newInstance(id); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.simple_fragment, newFragment); 
    ft.addToBackStack(null); 
    ft.commit(); 

    public static class CountingFragment extends Fragment { 
    int mNum; 

    static CountingFragment newInstance(int num) { 
     CountingFragment f = new CountingFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("num", num); 
     f.setArguments(args); 

     return f; 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment, container, false); 
     View tv = v.findViewById(R.id.text); 
     ((TextView)tv).setText("Hello. This is fragment example #" + mNum); 
      tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb)); 
     return v; 
    } 
} 
Questions connexes