在自定义对话框中填充NumberPicker

时间:2014-02-11 22:56:38

标签: java android

我正在尝试在自定义对话框中填充NumberPicker。目前我正在使用一个使用View并使另一个布局(对话框)膨胀的方法,然后该方法应该填充NumberPicker,但是当我在onCreate中调用它时它不会。

方法的代码:

public void fillArray() {

    View inflatedView = getLayoutInflater().inflate(R.layout.add_activity, null);
    np_hours = ( NumberPicker ) inflatedView.findViewById( R.id.hourNumber );
    np_minutes = ( NumberPicker ) inflatedView.findViewById( R.id.minuteNumber );
    String[] hoursArray = new String[25];
    String[] minutesArray = new String[61];
    for( i = 0; i < hoursArray.length; i++ ) {
        hoursArray[i] = Integer.toString( i );
    }

    for( x = 0 ; x < minutesArray.length; x++ ){
        minutesArray[x] = Integer.toString( x );
    }
    np_hours.setMinValue( 0 );
    np_hours.setMaxValue( 24 );
    np_hours.setWrapSelectorWheel( false );
    np_hours.setDisplayedValues( hoursArray );

    np_minutes.setMinValue( 0 );
    np_minutes.setMaxValue( 60 );
    np_minutes.setWrapSelectorWheel( false );
    np_minutes.setDisplayedValues( minutesArray );
}

编辑:

这个想法是选择某事的持续时间(而不是时间) - 对不起,如果这引起了混乱!

1 个答案:

答案 0 :(得分:2)

由于您只需要连续数字,因此无需创建侧数组。

您可以执行以下操作:

public void fillArray() {

View inflatedView = getLayoutInflater().inflate(R.layout.add_activity, null);
np_hours = ( NumberPicker ) inflatedView.findViewById( R.id.hourNumber );
np_hours.setMaxValue(24);
np_hours.setMinValue(0);

np_minutes = ( NumberPicker ) inflatedView.findViewById( R.id.minuteNumber );
np_minutes.setMaxValue(60);
np_minutes.setMinValue(0);

}

如果这不起作用,请发布您的XML布局和完整的活动代码(至少是onCreate()方法)。

参考:

NumberPicker Class

<强>更新

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

@Override
public boolean onCreateOptionsMenu( Menu menu ) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate( R.menu.main, menu );
    return true;
}

@SuppressLint("NewApi")
public void adActivity( View view ) {    
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    View parentView  = inflater.inflate(R.layout.add_activity, null);
    LayoutInflater inflater = this.getLayoutInflater();
        builder.setView(parentView);
           builder.setPositiveButton(R.string.add_activity, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   //Stert
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   dialog.cancel();
               }
           });
    fillArray(parentView);
    // Create the AlertDialog object and return it
    AlertDialog mainAlert = builder.create();
    mainAlert.show();

}

// Method to fill the NumberPicker's
public void fillArray(View view) {

    View inflatedView = view;
    np_hours = ( NumberPicker ) inflatedView.findViewById( R.id.hourNumber );
    np_hours.setMaxValue(24);
    np_hours.setMinValue(0);

    np_minutes = ( NumberPicker ) inflatedView.findViewById( R.id.minuteNumber );
    np_minutes.setMaxValue(60);
    np_minutes.setMinValue(0);


}