2013-09-07 2 views
-3

J'ai le prochain problème. Je veux passer la date que j'ai entré en utilisant mon DatePickerFragment à TextView, mais je ne sais pas comment je peux le faire.Android Sdk DatePickerFragment et TextView

Lorsque je crée TextView objet dans DatePickerFragment classe, puis définissez le texte à l'aide de la méthode onDateSet - l'application se bloque. Peut-être que cette question est trop basique, mais je n'ai trouvé aucune solution appropriée.

public class DatePickerFragment extends DialogFragment 
      implements DatePickerDialog.OnDateSetListener{ 

TextView tvDate1 = (TextView) getView().findViewByiD(R.id.tvDate); 


@Override 
public Dialog onCreateDialog(Bundle savedInstanceState){ 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 

    return new DatePickerDialog(getActivity(),this,year,month,day); 
} 

public void onDateSet(DatePicker view,int year, int month, int day){ 
     String 

    StringBuilder sb = new StringBuilder(); 
    sb.append(day); 
    sb.append("/"); 
    sb.append(month); 
    sb.append("/"); 
    sb.append(year); 
    tvDate1.setText(sb); 


} 
} 
+0

yo Vous devriez publier la pile de données pertinente si c'est un accident. Essayez la réponse affichée cela devrait fonctionner – Raghunandan

Répondre

2

Votre application s'écrase probablement à cause de cette

TextView tvDate1 = (TextView) getView().findViewByiD(R.id.tvDate); 

Je suppose que votre préparateur est dans un autre fichier et que vous essayez d'initialiser textview. findViewById est une méthode de classe d'activité

Utilisez une interface

http://developer.android.com/guide/components/fragments.html

Vérifiez le sujet à communiquer avec l'activité

public class DatePickerFragment extends DialogFragment 
implements DatePickerDialog.OnDateSetListener { 

    TheListener listener; 

public interface TheListener{ 
    public void returnDate(String date); 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
// Use the current date as the default date in the picker 
final Calendar c = Calendar.getInstance(); 
int year = c.get(Calendar.YEAR); 
int month = c.get(Calendar.MONTH); 
int day = c.get(Calendar.DAY_OF_MONTH); 
listener = (TheListener) getActivity(); 

// Create a new instance of DatePickerDialog and return it 
return new DatePickerDialog(getActivity(), this, year, month, day); 
} 

@Override 
public void onDateSet(DatePicker view, int year, int month, int day) { 
Calendar c = Calendar.getInstance(); 
c.set(year, month, day); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
String formattedDate = sdf.format(c.getTime()); 
if (listener != null) 
{ 
    listener.returnDate(formattedDate); 

} 

} 
} 

Ensuite, dans MainActivity implémenter l'interface et réglez la date textview

public class MainActivity extends Activity implements DatePickerFragment.TheListener{ 

    Button b; 
    TextView tv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b= (Button) findViewById(R.id.button1); 
     tv= (TextView) findViewById(R.id.textView1); 
     b.setOnClickListener(new OnClickListener() 
     { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       DialogFragment picker = new DatePickerFragment(); 
       picker.show(getFragmentManager(), "datePicker"); 
      } 

     }); 
    } 

    @Override 
    public void returnDate(String date) { 
     // TODO Auto-generated method stub 
     tv.setText(date); 
    } 

} 
+0

Vraiment merci =) je ne sais pas pourquoi la question a eu moins. Peut-être mon anglais si mauvais. Je suis désolé à ce sujet. J'apprends sdk android 1er jour et ne pas encore eu l'image entière. Merci encore une fois m8 –

+0

J'ai un objet écouteur ici null donc rien n'est affiché dans mon textview. Des idées pourquoi? – Jalle

+0

@Jalle wihtout le code n'est pas possible de dire pourquoi – Raghunandan