2015-06-08 3 views
0

Im пытается выбрать дату после нажатия кнопки и установки ее значения в TextView. Эта тема помогла Datepicker: How to popup datepicker when click on button and store value in variableКак установитьText из значения DatePickerDialog

Но не удалось установить значение datepicker на setText, объект textview v возвращает пустое исключение nullpointerexception.

  v.setText(new StringBuilder() 
       // Month is 0 based so add 1 
       .append(mMonth + 1).append("/").append(mDay).append("/") 
       .append(mYear).append(" ")); 
     System.out.println(v.getText().toString()); 

Любая помощь приветствуется

Полный код: Mainactivity.java

 public class MainActivity extends Activity { 


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

} 



public void pick(View v){ 

    Calendar c = Calendar.getInstance(); 
    int mYear = c.get(Calendar.YEAR); 
    int mMonth = c.get(Calendar.MONTH); 
    int mDay = c.get(Calendar.DAY_OF_MONTH); 
    System.out.println("the selected " + mDay); 
    DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, 
      new mDateSetListener(), mYear, mMonth, mDay); 
    dialog.show(); 

    } 

} 



    class mDateSetListener implements DatePickerDialog.OnDateSetListener { 

private TextView v; 

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, 
     int dayOfMonth) { 
    // TODO Auto-generated method stub 
    // getCalender(); 
    int mYear = year; 
    int mMonth = monthOfYear; 
    int mDay = dayOfMonth; 
    v.setText(new StringBuilder() 
      // Month is 0 based so add 1 
      .append(mMonth + 1).append("/").append(mDay).append("/") 
      .append(mYear).append(" ")); 



} 
} 

XML файл:

 <RelativeLayout 
    android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.datesamp.MainActivity" > 


    <Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:layout_marginTop="101dp" 
    android:text="Pick date" 
    android:onClick="pick"/> 

    <TextView 
    android:id="@+id/t1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button1" 
    /> 






    </RelativeLayout> 

ответ

0

Вы должны инициализировать переменную v перед использованием это в onDateSet(), например добавив следующее заявление до об .setText (...):

v = (TextView) findViewById(R.id.t1); 
v.setText(new StringBuilder() 
      // Month is 0 based so add 1 
      .append(mMonth + 1).append("/").append(mDay).append("/") 
      .append(mYear).append(" ")); 

Но для того, чтобы вставить это заявление внутри onDateSet(), я предлагаю вам определить класс mDateSetListener как внутренний класс внутри MainActivity, это сделает вашу жизнь проще.

+0

О да .. спасибо тонну – Kaijju

+0

приветствуются: пожалуйста, отметьте ответ как «полезный» – Livio

+0

да, сделано, спасибо agian – Kaijju

Смежные вопросы