2016-01-15 30 views
0

這個代碼有問題嗎? 我的日期表示變量必須標記爲最終,但如果我這樣做仍然無法正常工作,請向我發送錯誤:插入應用程序索引代碼api。 我試圖通過一個我的EditText顯示一個日期選擇器我對這段代碼有錯?試圖在edittext上顯示日期選擇器

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 

下面的代碼

package com.example.cesar.mybankaccess.view; 

import android.app.DatePickerDialog; 
import android.content.DialogInterface; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.DatePicker; 
import android.widget.EditText; 

import com.example.cesar.mybankaccess.R; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Locale; 

public class PromocionesFormulario extends AppCompatActivity{ 
    Calendar myCalendar; 
    EditText fechaInicio; 
    DatePickerDialog.OnDateSetListener date; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_promociones_formulario); 
     fechaInicio = (EditText) findViewById(R.id.fechaInicio); 
     myCalendar = Calendar.getInstance(); 
     DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, 
            int dayOfMonth) { 
       // TODO Auto-generated method stub 
       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, monthOfYear); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       updateLabel(); 
      } 
     }; 
     fechaInicio.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       new DatePickerDialog(PromocionesFormulario.class, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 
      } 
     }); 
    } 


    private void updateLabel() { 

     String myFormat = "MM/dd/yy"; //In which you need put here 
     SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); 

     fechaInicio.setText(sdf.format(myCalendar.getTime())); 
    } 

} 

回答

1

DatePickerDialog.OnDateSetListener date決賽。而在,

new DatePickerDialog(PromocionesFormulario.class, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
    myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 

PromocionesFormulario.this代替PromocionesFormulario.class

這裏的問題是,PromocionesFormulario.class的類型是Class。但是new DatePickerDialog()需要Context對象作爲第一個參數。

+0

太棒了。快樂編碼:) – Msp

0

UPDATE

至於提到的Msp,還需要改變這種狀況。上下文與.this給出 不.class


如果你想使物體最終,清除此行:

DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { //... 

,並使其:

date = new DatePickerDialog.OnDateSetListener() { //... 

然後更新您的初始化,如:

final DatePickerDialog.OnDateSetListener date; 

除此之外,你的問題並不明顯。