2012-01-03 31 views
6

benim android uygulamasında tarih seçici widget'ı ve saat seçici widget'ı açık düğme yeni düğmesini, eklemek istiyorum. Varsayılan olarak, bu widget'larda iki düğme bulunur, ayarlanır ve iptal edilir. Nasıl mümkün mü bu iki düğmeAndroid'de tarih seçme widget'ına nasıl yeni düğme ekleyebilirim?

bir daha düğmesi eklemek için? Evet ise, bir örnek verebilir misiniz?

Teşekkür

cevap

4

Bu benim app "Temizle" düğmesine hayata nasıl. Kullanıcı Temizle'yi tıkladığında yıl/ay/gün değerleri 0'dır. Uygulamanızdaki onDateSet() öğesini hem Set hem de Clear düğmesi için kullanabilirsiniz.

I (\ çerçeveler \ baz \ çekirdek \ Java \ robot \ uygulama \ DatePickerDialog.java) Android kaynak kodu referans.

Ben de esilver yardımını kullandı.

public class DatePickerDialogPlus extends DatePickerDialog { 
    private final DatePicker mDatePicker; 
    private final OnDateSetListener mCallBack; 

    /** 
    * @param context The context the dialog is to run in. 
    * @param callBack How the parent is notified that the date is set. 
    * @param year The initial year of the dialog. 
    * @param monthOfYear The initial month of the dialog. 
    * @param dayOfMonth The initial day of the dialog. 
    */ 
    public DatePickerDialogPlus(Context context, OnDateSetListener callBack, 
      int year, int monthOfYear, int dayOfMonth) { 
     super(context, 0, callBack, year, monthOfYear, dayOfMonth); 

     mCallBack = callBack; 

     Context themeContext = getContext(); 
     setButton(BUTTON_POSITIVE, 
      themeContext.getText(R.string.datePicker_setButton), this); 
     setButton(BUTTON_NEUTRAL, 
      themeContext.getText(R.string.datePicker_clearButton), this); 
     setButton(BUTTON_NEGATIVE, 
      themeContext.getText(R.string.datePicker_cancelButton), null); 
     setIcon(0); 
     setTitle(R.string.datePicker_title); 

     LayoutInflater inflater = (LayoutInflater) 
      themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.date_picker_dialog, null); 
     setView(view); 
     mDatePicker = (DatePicker) view.findViewById(R.id.datePicker); 
     mDatePicker.init(year, monthOfYear, dayOfMonth, this); 
    } 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     if (mCallBack != null) { 
      if (which == BUTTON_POSITIVE) { 
       mDatePicker.clearFocus(); 
       mCallBack.onDateSet(mDatePicker, mDatePicker.getYear(), 
        mDatePicker.getMonth(), mDatePicker.getDayOfMonth()); 
      } else if (which == BUTTON_NEUTRAL) { 
       mDatePicker.clearFocus(); 
       mCallBack.onDateSet(mDatePicker, 0, 0, 0); 
      } 
     } 
    } 
} 
+0

bu kodu teşekkür ederim ama ICS net ve set düğmesini – Jamshid

6

Sadece bu sınıfı oluşturun!

import android.app.DatePickerDialog; 
import android.content.Context; 

public class DatePickerWithNeutral extends DatePickerDialog { 

    public DatePickerWithNeutral(Context context, OnDateSetListener callBack, 
          int year, int monthOfYear, int dayOfMonth) { 
     super(context, 0, callBack, year, monthOfYear, dayOfMonth); 

     setButton(BUTTON_POSITIVE, ("Ok"), this); 
     setButton(BUTTON_NEUTRAL, ("Something"), this); // ADD THIS 
     setButton(BUTTON_NEGATIVE, ("Cancel"), this); 
    } 
} 

Daha sonra buna işlev eklemek için bunu kullanın!

date.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(
     new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Toast.makeText(getApplicationContext(), "Neutral Button Clicked!", 
      Toast.LENGTH_LONG).show(); 
    } 
}); 

:)

20

Sadece nötr düğme eklemek Enjoy bu

enter image description here

benziyor.

DatePickerDialog dialog = new DatePickerDialog(context, 0, callback, year, month, day); 
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "Name", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     //Your code 
    } 
}); 
+4

her zaman doğru çalışmaz Bu kabul cevap – SjoerdvGestel

+0

it'i olmalıdır: Sonra

import android.app.Dialog; import android.app.DialogFragment; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.os.Bundle; import android.widget.TextView; import android.widget.TimePicker; import java.util.Calendar; public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener, TimePickerDialog.OnClickListener { private static final String HOURS_ARG_KEY = "hours"; private static final String MINUTES_ARG_KEY = "minutes"; private static final String TARGET_ARG_KEY = "target"; public static TimePickerFragment newInstance(int hours, int minutes, int targetResId,...other values...) { TimePickerFragment tpf = new TimePickerFragment(); Bundle args = new Bundle(); //Setup the TimePickerFragment with some args if required. args.putInt(HOURS_ARG_KEY, hours); args.putInt(MINUTES_ARG_KEY, minutes); args.putInt(TARGET_ARG_KEY, targetResId); tpf.setArguments(args); return tpf; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker if we get nothing from // from the arguments. final Calendar c = Calendar.getInstance(); int hour = getArguments().getInt(HOURS_ARG_KEY,c.get(Calendar.HOUR_OF_DAY)); int minute = getArguments().getInt(MINUTES_ARG_KEY, c.get(Calendar.MINUTE)); // Create a new instance of TimePickerDialog and return it TimePickerDialog tpd = new TimePickerDialog(getActivity(), this, hour, minute, false); // And add the third button to clear the target field. tpd.setButton(DialogInterface.BUTTON_NEUTRAL,getActivity().getText(R.string.clear), this); return tpd; } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // Do something with the time chosen by the user int target = getArguments().getInt(TARGET_ARG_KEY,0); //Get reference of host activity (XML Layout File) TextView widget TextView txt = (TextView) getActivity().findViewById(target); //Format the hourOfDay and minute values, then display the user changed time on the TextView txt.setText(...FORMATTED TIME...); } @Override public void onClick(DialogInterface dialog, int which) { if(which == DialogInterface.BUTTON_NEUTRAL) { int target = getArguments().getInt(TARGET_ARG_KEY,0); //Get reference of host activity (XML Layout File) TextView widget TextView txt = (TextView) getActivity().findViewById(target); //Clear the field. txt.setText(""); } } } 

, senin Etkinliğinizden o kadar yük iyi bir çözüm çalışıyor – kondal

0

da buraya getirdin bir TimePicker, bir net düğmesini ekleyerek başvurulan bir soru.

ilgilenen herkes için, burada bir iletişim Fragment içinde TimePicker için bunu yapmak için nasıl.

TimePickerFragment tpf = TimePickerFragment.newInstance(...args...); 
tpf.show(getFragmentManager(), "timePicker");