16

ここのチュートリアルに従っています: http://developer.android.com/guide/topics/ui/controls/pickers.html

私は仕事をし、日付ピッカーが表示されます。ただし、ユーザーが日付を設定したときにどのように行動するかについて、私は立ち往生しています。

私は彼らがこの方法を持っているのを見ます:

public void onDateSet(DatePicker view, int year, int month, int day) {
    // Do something with the date chosen by the user
}

しかし、コードを入れても何もしません。

私はJavaにあまり詳しくないので、選択した日付でテキストビューを更新するために必要な追加コードがわかりません。

私はこのコードを追加しました:

private DatePickerDialog.OnDateSetListener mDateListener =
        new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int month, int day) {
                updateDate(year, month, day);
            }
        };

public void updateDate(int year, int month, int day) {
    TextView bdate = (TextView)findViewById(R.id.birthDate);
    Date chosenDate = new Date(year, month, day);
    java.text.DateFormat dateFormat = DateFormat.getDateFormat(getApplicationContext());
    bdate.setText(dateFormat.format(chosenDate));
}

しかし、それは何もしません。

私はこのほぼ正確な質問を見つけました: Dialogfragmentを使用してdatepickerから日付を取得します

ただし、そのソリューションでは、(EditSessionActivity) を使用しても、DatePickerFragment クラスが EditSessionActivity のみで動作するように制限されませんか?

4

3 に答える 3

2

ここでDialogFragmentsを使用できると思います:

DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");

DatePickerFragment を定義し、以下のメソッドを実装します

public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
DateEdit.setText(day + "/" + (month + 1) + "/" + year);
}

Android DialogFragment Exampleから取得。

于 2014-11-17T09:45:10.550 に答える
1

私の経験では、このコードは完全に機能します!、私はwin10 Android Studio 2.2を使用しています...

import android.app.Dialog;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.app.DatePickerDialog;
import android.widget.DatePicker;
import android.widget.EditText;
import java.util.Calendar;


public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);}

    public void datePicker(View view){
        DatePickerFragment fragment_date = new DatePickerFragment();
        fragment_date.show(getSupportFragmentManager(),"datePicker");}

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {
         String day_x = ""+ day  ,month_x = ""+(month+1);
         if (day   < 9 ){ day_x   = "0" + day_x;}
         if (month < 9 ){ month_x = "0" + month_x;}
         ((EditText) findViewById(R.id.txtDate)).setText(day_x + "/" + month_x + "/" + year);}

    public static class DatePickerFragment extends DialogFragment {
        @Override
        public Dialog onCreateDialog (Bundle savedInstanceState){
            final Calendar c = Calendar.getInstance();
            int year  = c .get(Calendar.YEAR);
            int month = c .get(Calendar.MONTH);
            int day   = c .get(Calendar.DAY_OF_MONTH);
            return new DatePickerDialog(getActivity() ,(DatePickerDialog.OnDateSetListener)this,day,month,year);}}

}

「textView txtDate」と「onclick = datePickerのボタン」があります

于 2016-10-24T00:20:07.387 に答える