2015-06-22 7 views
3

Я хотел использовать подборщик дат внутри своего настраиваемого диалога. При нажатии кнопки «Календарь» выберете дату для пользователя. У меня есть кнопка внутри моего класса customDilaog, и при нажатии этой кнопки я хочу открыть представление календаря. При нажатии этой кнопки произойдет сбой приложения. Я сделал это.Выбор даты в пользовательском диалоговом окне в Android

CustomDialog.java

public class CustomDialog extends Dialog implements android.view.View.OnClickListener { 

    private Button date; 
    DateFormat format = DateFormat.getDateInstance(); 
    Calendar calender = Calendar.getInstance(); 

    public CustomDialog(Context context) { 
     super(context); 
    } 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
       date=(Button)findViewById(R.id.dateText2); 
    } 
    public void onClick(View v) { 
     if (v.getId()==R.id.datePick) { 
      openDatePicker(v); 
     //another if-else statements 
     } 

    public void updateDate(){ 
      date.setText(format.format(calender.getTime())); 
    } 

    public void setDate(){ 
      new DatePickerDialog(getContext(),dp,calender.get(Calendar.YEAR) ,calender.get(Calendar.MONTH),calender.get(Calendar.DAY_OF_MONTH)).show();     
    } 

     DatePickerDialog.OnDateSetListener dp = new DatePickerDialog.OnDateSetListener() { 

     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { 
       calender.set(Calendar.YEAR,year); 
       calender.set(Calendar.MONTH, monthOfYear); 
       calender.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       updateDate();     
      } 
     }; 
    } 

Я не знаю, где я сделал ошибку.

+0

сообщение журнал ошибок. – Simas

+0

@Blackbelt openDatePicker - мой метод onClick xml. –

+0

'Error Log' java.lang.IllegalStateException: Не удалось найти метод openDatePicker (View) в классе активности android.view.ContextThemeWrapper для обработчика onClick в классе вида android.widget.Button с идентификатором 'dateText2' –

ответ

5

использование этого надлежащим образом

@OnClick(R.id.fab) 
public void fabbuttonclicked(){ 
    // get prompts.xml view 
    LayoutInflater layoutInflater = LayoutInflater.from(context.getContext()); 

     View promptView = layoutInflater.inflate(R.layout.dialog_add_new_book, null); 


    final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context.getContext()); 

    // set prompts.xml to be the layout file of the alertdialog builder 
    alertDialogBuilder.setView(promptView); 

    final EditText titlebookEditText = (EditText) promptView.findViewById(R.id.book_title_edit_text); 
    final EditText authorbookEditText=(EditText) promptView.findViewById(R.id.book_author_edit_text); 
    final Button dateboughtbookButton=(Button) promptView.findViewById(R.id.book_datebought_button); 
    final EditText conditionbookEditText=(EditText) promptView.findViewById(R.id.book_condition_edit_text); 
    final EditText urlimagebookEditText=(EditText) promptView.findViewById(R.id.book_Image_edit_text); 

// Show a datepicker when the dateButton is clicked 
    dateboughtbookButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Calendar now = Calendar.getInstance(); 
      final Calendar c = Calendar.getInstance(); 

      DatePickerDialog dpd = new DatePickerDialog(context.getContext(), 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          dateboughtbookButton.setText(dayOfMonth + "-" 
            + (monthOfYear + 1) + "-" + year); 

         } 
        }, c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DATE)); 
        dpd.show(); 


      } 
     } 

     ); 


     alertDialogBuilder 
       .setCancelable(false) 
       . 

     setPositiveButton("Add Alarm",new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick (DialogInterface dialog,int id){ 
       String titlebook = titlebookEditText.getText().toString(); 
       String authorbook = authorbookEditText.getText().toString(); 
       String dateboughtbook = dateboughtbookButton.getText().toString(); 
       String conditionbook = conditionbookEditText.getText().toString(); 
       String urlimagebook = urlimagebookEditText.getText().toString(); 


       if (titlebook.isEmpty()) { 
        Toast.makeText(getActivity(), " Amount is required ! \n Alarm not set", Toast.LENGTH_LONG).show(); 
        return; 
       } else { 
        int nextID; 
        nextID = (int) (realm.where(Book.class).maximumInt("bookId") + 1); 
        Book book = new Book(nextID, titlebook, authorbook, dateboughtbook, conditionbook, urlimagebook); 

        realm.beginTransaction(); 
        realm.copyToRealmOrUpdate(book); 
        realm.commitTransaction(); 

        dialog.dismiss(); 
        loadBooks(); 
        Toast.makeText(getActivity(), " New BOOK added ! \n ", Toast.LENGTH_LONG).show(); 

        //Toast.makeText(getActivity(), "Alarm is Set", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 

     ) 
       . 

     setNegativeButton("Cancel", 
            new DialogInterface.OnClickListener() { 
      public void onClick (DialogInterface dialog,int id){ 
       dialog.cancel(); 
      } 
     }); 

    // create an alert dialog 
    AlertDialog alertD = alertDialogBuilder.create(); 

    alertD.show(); 

}