come rendere android selezione del tempo di non permettere al passato di essere scelta

CIAO sono nuovo di android e ho voglia di non permettere al passato di essere scelto mediante selezione del tempo..
ho provato con il seguente codice

private TimePicker.OnTimeChangedListener StartTimeChangedListener=new TimePicker.OnTimeChangedListener()
    {
        public void onTimeChanged(TimePicker view,int selectedHour,int selectedMinute)
        {
            update(view,selectedHour,selectedMinute);
        }
    };

e non so come scrivere il codice per l’aggiornamento(vista,selectedHour,selectedMinute); c’è qualcuno che può aiutarmi per favore…

  • Questo è un problema della logica, come È verificare se il tempo è passato? Che cosa significa questo?
  • JoxTraex sì che è di destra. la sua totalmente dipende da come si mette la logica per farlo.
InformationsquelleAutor Santosh | 2012-02-08



3 Replies
  1. 2

    Hai provato a seguire la tutorial sulla pagina degli sviluppatori per il timepicker?

    Edit:

    Ok, quindi seguendo il tutorial abbiamo il metodo di aggiornamento per la textview che mostrerà il vostro tempo:

    private void updateDisplay() {
        mTimeDisplay.setText(
            new StringBuilder()
                    .append(pad(mHour)).append(":")
                    .append(pad(mMinute)));
    }
    
    private static String pad(int c) {
        if (c >= 10)
            return String.valueOf(c);
        else
            return "0" + String.valueOf(c);
    }

    La finestra di dialogo che verrà creato per l’utente di scegliere il tempo:

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case TIME_DIALOG_ID:
            return new TimePickerDialog(this,
                    mTimeSetListener, mHour, mMinute, false);
        }
        return null;
    }

    E qui è dove vorrei aggiungere la restrizione che si desidera, il metodo di callback quando l’utente imposta il tempo. È necessario per ottenere l’ora e i minuti correnti, e se l’utente seleziona un tempo passato, non si visualizzano le sue modifiche e di inviargli un Toast o qualcosa del genere.

    Utilizzando il Calendario si può facilmente ottenere:

    Calendar c = Calendar.getInstance();           
    
    //the callback received when the user "sets" the time in the dialog
    private TimePickerDialog.OnTimeSetListener mTimeSetListener =
        new TimePickerDialog.OnTimeSetListener() {
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
               if (mHour >= Integer.getInteger(c.get(Calendar.HOUR_OF_DAY)) && mMinute >= Integer.getInteger(c.get(Calendar.MINUTE))) { 
                mHour = hourOfDay;
                mMinute = minute;                
                updateDisplay();
                } else 
                //Display a toast or something to inform the user that he can't pick a past time.   
            }

    Ora, se si desidera che l’utente non sarà in grado di scegliere un tempo precedente nella finestra di Dialogo creata, è necessario creare il vostro proprio ora raccolta schermo, perché il TimePickerDialog non ha restrizioni su ciò che i valori che si possono scegliere.

    Speranza che aiuta!

    • ho provato in questo tutorial, ma che solo modifica il tempo che abbiamo scelto
    • ma il mio problema è non permettere al passato di essere scelta
    • ho usato il seguente codice
    • E non dimenticare che quello che ho scritto è il mio approccio al problema. Non con qualsiasi mezzo l’unico, o il modo migliore per fare questo.
    • privato TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker vista, int selectedHour,int selectedMinute) { if(selectedHour<ora) { // vista.setOnTimeSetListener(NullTimeChangedListener); // set minuti a vista.setCurrentMinute(minuti); //imposta l’ora vista.setCurrentHour(ora); tvDisplayTime.setText(new StringBuilder().append(pad(ora).append(“:”).append(pad(minuti)));
    • thank u per l’aiuto
    • la sua mostra il messaggio di errore al numero Intero.getInteger() metodo u può dirmi la soluzione corretta
    • Si prega di modificare la tua domanda ed aggiungere l’errore !
    • ma questo non impedisce all’utente di selezionare il tempo non desiderato, è la sola notifica dopo la selezione da parte dell’utente!

  2. 0

    Ho modificato il codice un po ‘ e a me funziona:
    Ho preso sia la data e l’ora selettore in una finestra di dialogo di avviso e scrivere del codice quando qualcuno vuole impostare il tempo di allarme attraverso la sua positiva pulsante.

           final DatePicker pickdate = (DatePicker) view
                    .findViewById(R.id.datePicker1);
           final TimePicker pickTime = (TimePicker) view
                    .findViewById(R.id.timePicker1);
    
            builder.setPositiveButton("Set Alarm Time",
                    new DialogInterface.OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                            int day = pickdate.getDayOfMonth();
                            int month = pickdate.getMonth();
                            int year = pickdate.getYear();
    
                            int hour = pickTime.getCurrentHour();
                            int min = pickTime.getCurrentMinute();
                            c = Calendar.getInstance();
    
          if (min >= c.get(Calendar.MINUTE)
          && hour >= c.get(Calendar.HOUR_OF_DAY)
          && day >= c.get(Calendar.DAY_OF_MONTH)
          && (month + 1) >= c.get(Calendar.MONTH)
          && year >= c.get(Calendar.YEAR)) {
    
      String setdate = year + "-" + (month + 1) + "-"
      + day + " " + hour + ":" + min;
    
      //Use the string where you wants
     }
    
        else {
             //show some error toast
         Toast.makeText(context,
         Html.fromHtml("<font color=RED><em><strong>Past Time  Can't Be Added</strong></em>/font>")
        ,Toast.LENGTH_SHORT).show();
    
    }
  3. 0
    if((hourOfDay <= (calendar.get(Calendar.HOUR_OF_DAY)))&&
            (minute <= (calendar.get(Calendar.MINUTE)))){
        Toast.makeText(getActivity(), "Wrong hour",
                Toast.LENGTH_SHORT).show();
    }

Lascia un commento