How to pick a second using TimePicker, android

后端 未结 6 1243
长发绾君心
长发绾君心 2021-02-07 05:51

I have used TimePicker to make the user to choose time see here and here also. But I didnot find a way to make the user to select second also. Now user can select Hour and Minut

6条回答
  •  广开言路
    2021-02-07 06:21

    Here is a custom TimePickerDialog with seconds.

    MainActivity.java

    import android.content.SharedPreferences;
    import android.preference.PreferenceManager;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.NumberPicker;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            final TextView timeTV = findViewById(R.id.time_text_view);
            timeTV.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    View view = View.inflate(MainActivity.this, R.layout.time_dialog, null);
                    final NumberPicker numberPickerHour = view.findViewById(R.id.numpicker_hours);
                    numberPickerHour.setMaxValue(23);
                    numberPickerHour.setValue(sharedPreferences.getInt("Hours", 0));
                    final NumberPicker numberPickerMinutes = view.findViewById(R.id.numpicker_minutes);
                    numberPickerMinutes.setMaxValue(59);
                    numberPickerMinutes.setValue(sharedPreferences.getInt("Minutes", 0));
                    final NumberPicker numberPickerSeconds = view.findViewById(R.id.numpicker_seconds);
                    numberPickerSeconds.setMaxValue(59);
                    numberPickerSeconds.setValue(sharedPreferences.getInt("Seconds", 0));
                    Button cancel = view.findViewById(R.id.cancel);
                    Button ok = view.findViewById(R.id.ok);
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setView(view);
                    final AlertDialog alertDialog = builder.create();
                    cancel.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            alertDialog.dismiss();
                        }
                    });
                    ok.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            timeTV.setText(numberPickerHour.getValue() + ":" + numberPickerMinutes.getValue() + ":" + numberPickerSeconds.getValue());
    //                        timeTV.setText(String.format("%1$d:%2$02d:%3$02d", numberPickerHour.getValue(), numberPickerMinutes.getValue(), numberPickerSeconds.getValue()));
                            SharedPreferences.Editor editor = sharedPreferences.edit();
                            editor.putInt("Hours", numberPickerHour.getValue());
                            editor.putInt("Minutes", numberPickerMinutes.getValue());
                            editor.putInt("Seconds", numberPickerSeconds.getValue());
                            editor.apply();
                            alertDialog.dismiss();
                        }
                    });
                    alertDialog.show();
                }
            });
        }
    }
    

    activity_main.xml

    
    
    
        
    
    
    

    time_dialog.xml

    
    
        
    
            
    
            
    
            
        
    
        
    
        
    
            

提交回复
热议问题