2015-11-18 3 views
1

Я работаю в проекте, где пользователь вводит время в TimePickerDialog. Я хочу взять этот вход и сохранить его в другой переменной и показать его как textView.Принимает входы от timePickerDialog

public class MainActivity extends Activity { 

Button b1; 
TextView tv; 
int hour,min; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    b1 = (Button)findViewById(R.id.b1); 
    tv = (TextView)findViewById(R.id.tv1); 

    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      TimePickerDialog tpd = new TimePickerDialog(MainActivity.this, new OnTimeSetListener() { 

       @Override 
       public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
        // TODO Auto-generated method stub 
        hour = hourOfDay; 
        min = minute; 
       } 
      }, hour, min, false); 
      tpd.show(); 
      tv.setText(hour + ":" + min); 
     } 

     }); 
    } 


} 

Когда я запускаю это приложение сначала, текст показывает 0: 0. я нажимаю кнопку, появляется диалоговое окно. Я устанавливаю время и нажимаю, но текстовое изображение не изменяется, и только после того, как я снова нажимаю кнопку, текстовое изображение изменяется на предыдущий вход. То, что я хочу, - это то, что, когда я нажимаю в timepickerdialog, текстовое изображение покажет время, которое я установил. Он показывает это значение, но только после того, как я снова нажму кнопку.

+0

'tv.setText (час + ":" + мин);' переместить эту строку в 'onTimeSet' функция – Minato

ответ

0

Попробуйте

public class MainActivity extends Activity { 

Button b1; 
TextView tv; 
int hour,min; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    b1 = (Button)findViewById(R.id.b1); 
    tv = (TextView)findViewById(R.id.tv1); 

    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      TimePickerDialog tpd = new TimePickerDialog(MainActivity.this, new OnTimeSetListener() { 

       @Override 
       public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
        // TODO Auto-generated method stub 
        hour = hourOfDay; 
        min = minute; 
        tv.setText(hour + ":" + min); 
       } 
      }, hour, min, false); 
      tpd.show(); 
     } 
    }); 
    } 
} 
3

При нажатии кнопки «Готово» вам необходимо обновить TextView. Прямо сейчас ваш TextView не обновляется после завершения выбора времени. Просто измените свой код, как показано ниже:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    b1 = (Button)findViewById(R.id.b1); 
    tv = (TextView)findViewById(R.id.tv1); 

    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      TimePickerDialog tpd = new TimePickerDialog(MainActivity.this, new OnTimeSetListener() { 

       @Override 
       public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
        // TODO Auto-generated method stub 
        hour = hourOfDay; 
        min = minute; 

        //Place it here 
        tv.setText(hour + ":" + min); 
       } 
      }, hour, min, false); 
      tpd.show(); 
     } 

     }); 
    } 
} 
+0

Вероятно, это идеальный –