Autore Topic: Parametrizzare timepickerdialog  (Letto 452 volte)

Offline MrCrazy

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
Parametrizzare timepickerdialog
« il: 04 Settembre 2013, 16:33:55 CEST »
0
Salve sono nuovo , e sto cercando di creare un activity in cui si possano impostare diversi orari .
Ho seguito il tutorial sul timepicker su http://developer.android.com/guide/topics/ui/controls/pickers.html . E creando una classe TimePickerFragment sono riuscito a  creare un dialog ed impostare il valore selezionato nella mia activity.
Visto che vorrei riusare la stessa cosa per altri 2 pulsanti che impostano altre 2 textview ,mi chiedevo come poter parametrizzare la funzione showTimePickerDialog che invoco dal bottone anche
Codice (Java): [Seleziona]
public void showTimePickerDialog(View v) {
            DialogFragment newFragment = new TimePickerFragment();
            newFragment.show(getFragmentManager(), "timePicker");
           
        }

la classer TimepickerFragment
Codice (Java): [Seleziona]
public class TimePickerFragment extends DialogFragment  implements TimePickerDialog.OnTimeSetListener {

               
         @Override
            public Dialog onCreateDialog(Bundle savedInstanceState) {
               
                // Use the current time as the default values for the picker
                final Calendar c = Calendar.getInstance();
                int hour = c.get(Calendar.HOUR_OF_DAY);
                int minute = c.get(Calendar.MINUTE);
               
                // Create a new instance of TimePickerDialog and return it
                return new TimePickerDialog(getActivity(), this, hour, minute,(true));
            }
         
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                // Do something with the time chosen by the user
                Log.i("",""+hourOfDay+":"+minute);
                TextView txtEntr=(TextView)getActivity().findViewById(R.id.txtE_m);
                txtEntr.setText(""+hourOfDay+":"+minute);
               
            }
Sostanzialmente dovrei parametrizzare txtE_m dentro 
Codice (Java): [Seleziona]
TextView txtEntr=(TextView)getActivity().findViewById(R.id.txtE_m);
grazie 1000


Post unito: 05 Settembre 2013, 10:42:30 CEST
Avrei pensato di utilizzare le "sharedpreferences" cosi' memorizzo l'id del bottone chiamante e faccio un case sulla funzione che setta il valore di testo.
Nell' activity chiamante  faccio cosi'
Codice (Java): [Seleziona]
public void showTimePickerDialog(View v) {
                //p n - gli passo l'ID del bottone
                prefEditor.putInt("button",v.getId());
                prefEditor.commit();
                //p n
            DialogFragment newFragment = new TimePickerFragment();
            newFragment.show(getFragmentManager(), "timePicker");
           
        }

mentre nella classe TimepickerFragment

Codice (XML): [Seleziona]
 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                // Do something with the time chosen by the user
               
               
                Log.i("",""+hourOfDay+":"+minute);
                //p n
                switch (prefsT_M.getInt("button", 0)) {
                case R.id.txtE_m:
                        TextView txtEntr=(TextView)getActivity().findViewById(R.id.txtE_m);
                        txtEntr.setText(""+hourOfDay+":"+minute);
                break;
                case R.id.txtU_m:
                        TextView txtUsc=(TextView)getActivity().findViewById(R.id.txtU_m);
                        txtUsc.setText(""+hourOfDay+":"+minute);
                break;
                }
                //p n
               
               
            }
Non e' molto elegante ma dovrebbe funzionare.
Uso il condizionale , perche' ora quando mando in esecuzione il progetto (con eclipse) nel layout dove ho aggiunto le nuove tetview e il button , non le vedo mi fa vedere il vecchio layout .
Ho piu' problemi con l'ambiente di sviluppo che con il codice  :-[


Post unito: 05 Settembre 2013, 14:29:24 CEST
Ho capito perche' non visualizzavo il layout (anche se mi sembra strano) ho chiamato la stessa funzione da entrambi i Button.

Codice (XML): [Seleziona]
    <Button
       android:id="@+id/buttonE_m"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/txtE_m"
       android:layout_alignBottom="@+id/txtE_m"
       android:layout_toRightOf="@+id/textView2"
       android:onClick="showTimePickerDialog"
       android:text="ora" />

    <Button
       android:id="@+id/ButtonU_m"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/buttonE_m"
       android:layout_below="@+id/buttonE_m"
       android:layout_marginTop="29dp"
       android:onClick="showTimePickerDialog"
       android:text="ora" />
Eliminando "android:onClick="showTimePickerDialog"" vedo i componenti ma naturalmente il bottone non funziona .

Come posso fare?

p.s. una piccola correzione nella  classe TimepickerFragment il case lo faccio sul id del bottone e non sul id della textview


Post unito: 05 Settembre 2013, 16:45:16 CEST
Fatto!!
ho implementato un listener sull onclick che chiama la funzione showTimePickerDialog .


scusate
« Ultima modifica: 05 Settembre 2013, 16:45:17 CEST da MrCrazy, Reason: Merged DoublePost »