Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android EditText单击事件上的DatePickerDialog(运行问题)_Android_Datepicker - Fatal编程技术网

Android EditText单击事件上的DatePickerDialog(运行问题)

Android EditText单击事件上的DatePickerDialog(运行问题),android,datepicker,Android,Datepicker,我正在实现一个片段,其中有一个edittext,我想在单击它时弹出一个日期选择器 我使用了以下链接 但要改变以下几点: 我补充说: 私有静态最终字符串标记=“AppoinFragment”; 和 字符串myFormat=“MM/dd/yy”; SimpleDataFormat sdf=新的SimpleDataFormat(myFormat,Locale.US) 并替换nextField.requestFocus();使用fullname.requestFocus(); 当运行我的应用程序并点击

我正在实现一个片段,其中有一个edittext,我想在单击它时弹出一个日期选择器 我使用了以下链接

但要改变以下几点: 我补充说: 私有静态最终字符串标记=“AppoinFragment”; 和 字符串myFormat=“MM/dd/yy”; SimpleDataFormat sdf=新的SimpleDataFormat(myFormat,Locale.US)

并替换nextField.requestFocus();使用fullname.requestFocus(); 当运行我的应用程序并点击编辑文本时,什么都没有发生。 以下是我使用的代码:

AppointFragment.java

package com.example.appointapp;

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

import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.EditText;

public class AppointFragment extends Fragment{

    private static final String TAG = "AppoinFragment";
    EditText fullname;

    private Appointment mappoitnemnt;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mappoitnemnt= new Appointment();


}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.fragment_appoint, parent, false);



    fullname = (EditText)v.findViewById(R.id.datea_text);

    fullname.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                DialogFragment datePickerFragment = new DatePickerFragment() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int day) {
                        Log.d(TAG, "onDateSet");
                        Calendar c = Calendar.getInstance();
                        c.set(year, month, day);

                        String myFormat = "MM/dd/yy"; 
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                        fullname.setText(sdf.format(c.getTime()));

                        fullname.requestFocus(); 
                    }
                };
                datePickerFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
            }
        }
    });


    return v;
}
}
package com.example.appointapp;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;

public  class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        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);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {

    }
}
DataPickerFragment.java

package com.example.appointapp;

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

import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.EditText;

public class AppointFragment extends Fragment{

    private static final String TAG = "AppoinFragment";
    EditText fullname;

    private Appointment mappoitnemnt;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mappoitnemnt= new Appointment();


}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.fragment_appoint, parent, false);



    fullname = (EditText)v.findViewById(R.id.datea_text);

    fullname.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                DialogFragment datePickerFragment = new DatePickerFragment() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int day) {
                        Log.d(TAG, "onDateSet");
                        Calendar c = Calendar.getInstance();
                        c.set(year, month, day);

                        String myFormat = "MM/dd/yy"; 
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                        fullname.setText(sdf.format(c.getTime()));

                        fullname.requestFocus(); 
                    }
                };
                datePickerFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
            }
        }
    });


    return v;
}
}
package com.example.appointapp;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;

public  class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        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);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {

    }
}

请帮我解决这个问题

碎片上还有其他内容吗?EditText可能已经具有焦点,因此单击它不会触发侦听器。试着用OnClickListener替换它。是的,我添加了android:focusable=“false”,因为有人写了我们应该添加它。当我把它取下来的时候,它工作了。非常感谢你的帮助