0
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
   android:orientation="vertical" >

   <TextView
        android:id="@+id/textview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
    <Button

        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click here for change"/>
 </LinearLayout>

///////////////////////////////////////////////

package date_program.day_program;

   import java.util.Calendar;
   import android.app.Activity;
   import android.app.DatePickerDialog;
   import android.app.Dialog;
   import android.os.Bundle;
   import android.view.View;
   import android.view.View.OnClickListener;
   import android.widget.Button;
   import android.widget.DatePicker;
   import android.widget.TextView;

   public class SampleActivity extends Activity {
    /** Called when the activity is first created. */

    private int year,month,day;
    private TextView tvdisplay;
        private Button btpress;
        static final int DATE_DIALOG_ID=999;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tvdisplay=(TextView)findViewById(R.id.textview1);
        btpress=(Button)findViewById(R.id.button1);
    tpress.setOnClickListener(new View.OnClickListener() {

       public void onClick(View arg0) {
       // TODO Auto-generated method stub

           showDialog(DATE_DIALOG_ID);  

           }
});
        final Calendar c=Calendar.getInstance();
            year=c.get(Calendar.YEAR);
            month=c.get(Calendar.MONTH);
            day=c.get(Calendar.DAY_OF_MONTH);
            Updatedisplay();
}

    protected Dialog OnCreateDialog(int Id)  {
    switch(Id) {    
    case DATE_DIALOG_ID:
    return new DatePickerDialog(this,datepicking,year,month,day);   
    }

     return null;
  }

      private DatePickerDialog.OnDateSetListener datepicking =new 

      DatePickerDialog.OnDateSetListener(){

            public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {

        // TODO Auto-generated method stub
                    year=arg1;
                    month=arg2;
                    day=arg3;
                        Updatedisplay();}
 };

  private void Updatedisplay() {
tvdisplay.setText(new StringBuilder().append("Date-").
   append(month+1).append("/").append(day).append("/").append(year));   
 }
 } 

Androidでこのプログラムを使用して現在の日付を変更できない理由、つまりボタンをクリックしてもダイアログボックスが表示されないのですが、このプログラムに何か問題がありますか?詳しく説明してください.

4

1 に答える 1

0

これは間違ったメソッド シグネチャです。

protected Dialog OnCreateDialog(int Id)  {
switch(Id) {    
case DATE_DIALOG_ID:
return new DatePickerDialog(this,datepicking,year,month,day);   
}

オーバーライドする正しい方法は次のとおりですprotected Dialog onCreateDialog(int id)(先頭の小文字の 'o' に注意してください...大文字と小文字は重要です!)。2 つの簡単なルールに従うことで、将来このようなエラーから身を守ることができます。

  1. 慣例により、メソッド名は常に小文字で始める必要があります。これは、フレームワーク全体がどのように動作するかです
  2. @Overrideフレームワークからオーバーライドするすべてのメソッドに対してアノテーションを使用します。この場合、コンパイラはOnCreateDialog無効なオーバーライドであると通知します。onCreateDialog
于 2012-07-03T18:08:31.903 に答える