Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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
Java 在实际设备中,日期选择器对话框崩溃_Java_Android - Fatal编程技术网

Java 在实际设备中,日期选择器对话框崩溃

Java 在实际设备中,日期选择器对话框崩溃,java,android,Java,Android,我使用日期选择器对话框来注册用户,它在emulator 25中运行良好,但当我在实际设备中按下该字段时,应用程序崩溃。在这方面有人能帮我吗? 此外,我在同一个网络上,但是当我注册或登录到应用程序时,我没有收到来自PHP脚本的Json响应,这意味着它不会从数据库发送或接收数据 public class Signup extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, View.OnClickListene

我使用日期选择器对话框来注册用户,它在emulator 25中运行良好,但当我在实际设备中按下该字段时,应用程序崩溃。在这方面有人能帮我吗? 此外,我在同一个网络上,但是当我注册或登录到应用程序时,我没有收到来自PHP脚本的Json响应,这意味着它不会从数据库发送或接收数据

public class Signup extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, View.OnClickListener{

//    private UserSingupTask mAuthTask = null;
   // private EditText sEmail,sPassword;

    EditText Name, Email, Password, DateOfBirth;
    RadioGroup Gender;
    Button signupbutton;
    private ProgressDialog progressDialog;
    private TextView textViewLogin;
    String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signup);

        Name = (EditText)findViewById(R.id.signupname);
        Email = (EditText)findViewById(R.id.signupemail);
        Password = (EditText) findViewById(R.id.signuppassword);
        DateOfBirth = (EditText)findViewById(R.id.signupdateofbirth);
        Gender = (RadioGroup) findViewById(R.id.radio_grp);
        signupbutton = (Button) findViewById(R.id.signupButton);
        textViewLogin = (TextView) findViewById(R.id.link_login);

        progressDialog = new ProgressDialog(this);

        signupbutton.setOnClickListener(this);
        textViewLogin.setOnClickListener(this);
        Gender = (RadioGroup) findViewById(R.id.radio_grp);


    }



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

    @RequiresApi(api = Build.VERSION_CODES.N)
    private void setDate(final Calendar calendar)
    {
        final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
        EditText editText = ((EditText) findViewById(R.id.signupdateofbirth));
        editText.setText(dateFormat.format(calendar.getTime()));
    }



    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        Calendar calendar = new GregorianCalendar(year,month,dayOfMonth);
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH,month);
        calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
       // editText.setText(dateFormat.format(calendar.getTime()));
        setDate(calendar);


    }

    public static class DatePickerFragment extends DialogFragment
    {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int day = calendar.get(Calendar. DAY_OF_MONTH);

            return new DatePickerDialog(getActivity(),(DatePickerDialog.OnDateSetListener)getActivity(),year,month,day);

        }
    }

    private void registerUser() {
        final String username = Name.getText().toString().trim();
        final String email = Email.getText().toString().trim();
        final String password = Password.getText().toString().trim();
        final String dateofbirth = DateOfBirth.getText().toString().trim();


        String genderString = "";

        //Get the selected gender value from the radio buttons
        RadioButton male = (RadioButton) findViewById(R.id.male);
        boolean isMaleChecked = male.isChecked();
        RadioButton female = (RadioButton) findViewById(R.id.female);
        boolean isFemaleChecked = female.isChecked();

        if(isMaleChecked){
            genderString = "male";
        }else if(isFemaleChecked){
            genderString = "female";
        }

        final String _gender = genderString;



        if (!email.matches(emailPattern) && password.length()<5) {
            Toast.makeText(getApplicationContext(),"Invalid Email or Password is Short",Toast.LENGTH_SHORT).show();
        } else {

            progressDialog.setMessage("Registering user...");
            progressDialog.show();
            StringRequest stringRequest = new StringRequest(Request.Method.POST,
                    Constants.URL_REGISTER,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            progressDialog.dismiss();

                            try {
                                JSONObject jsonObject = new JSONObject(response);
                                if(jsonObject.getBoolean("error")){
                                    Toast.makeText(getApplicationContext(), jsonObject.getString("message"), Toast.LENGTH_LONG).show();

                                }else if (!jsonObject.getBoolean("error")){
                                    Toast.makeText(getApplicationContext(), jsonObject.getString("message"), Toast.LENGTH_LONG).show();
                                    finish();
                                }



                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            progressDialog.hide();
                            Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<>();
                    params.put("name", username);
                    params.put("email", email);
                    params.put("password", password);
                    params.put("dateOfBirth", dateofbirth);
                    params.put("gender", _gender);
                    return params;
                }
            };

            RequestHandler.getInstance(this).addToRequestQueue(stringRequest);
       //         finish();
        }


    }
    @Override
    public void onClick(View view) {

        if (view == signupbutton)
        {
            registerUser();
        }


        if(view == textViewLogin)
            startActivity(new Intent(this, Login.class));
    }


}
公共类注册扩展了AppCompatActivity实现了DatePickerDialog.OnDateSetListener、View.OnClickListener{
//private UserSingupTask mauthttask=null;
//私人编辑文本语义,sPassword;
编辑文本名称、电子邮件、密码、出生日期;
放射组性别;
按钮标志按钮;
私有进程对话;
私有文本视图文本视图登录;
字符串emailPattern=“[a-zA-Z0-9.\u-]+@[a-z]+\.+[a-z]+”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
Name=(EditText)findViewById(R.id.signupname);
Email=(EditText)findviewbyd(R.id.signupemail);
密码=(EditText)findViewById(R.id.signuppassword);
DateOfBirth=(EditText)findViewById(R.id.signupdateofbirth);
性别=(放射组)findViewById(R.id.radio\U grp);
signupbutton=(按钮)findViewById(R.id.signupbutton);
textViewLogin=(TextView)findViewById(R.id.link\u login);
progressDialog=新建progressDialog(此);
signupbutton.setOnClickListener(此);
textViewLogin.setOnClickListener(这个);
性别=(放射组)findViewById(R.id.radio\U grp);
}
公共作废日期选择器(视图)
{
DatePickerFragment=新的DatePickerFragment();
show(getSupportFragmentManager(),“date”);
}
@RequiresApi(api=Build.VERSION\u code.N)
私有无效设置日期(最终日历)
{
final DateFormat DateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM);
EditText EditText=((EditText)findViewById(R.id.signupdateofbirth));
editText.setText(dateFormat.format(calendar.getTime());
}
@RequiresApi(api=Build.VERSION\u code.N)
@凌驾
public void onDateSet(日期选择器视图,整数年,整数月,整数天月){
日历=新的公历日历(年、月、月日);
calendar.set(calendar.YEAR,YEAR);
日历.设置(日历.月,月);
calendar.set(calendar.DAY\u OF月,dayOfMonth);
//editText.setText(dateFormat.format(calendar.getTime());
设定日期(日历);
}
公共静态类DatePickerFragment扩展了DialogFragment
{
@RequiresApi(api=Build.VERSION\u code.N)
@非空
@凌驾
创建对话框上的公共对话框(Bundle savedInstanceState){
最终日历=Calendar.getInstance();
int year=calendar.get(calendar.year);
int month=calendar.get(calendar.month);
int day=calendar.get(calendar.day/u月);
返回新的DatePickerDialog(getActivity(),(DatePickerDialog.OnDateSetListener)getActivity(),年、月、日);
}
}
私有无效注册器(){
最终字符串username=Name.getText().toString().trim();
最终字符串email=email.getText().toString().trim();
最终字符串密码=password.getText().toString().trim();
最终字符串dateofbirth=dateofbirth.getText().toString().trim();
字符串genderString=“”;
//从单选按钮中获取选定的性别值
RadioButton male=(RadioButton)findViewById(R.id.male);
布尔值isMaleChecked=male.isChecked();
RadioButton阴性=(RadioButton)findViewById(R.id.female);
布尔值isFemaleChecked=female.isChecked();
如果(已选中){
genderString=“男性”;
}else if(是否已选中){
genderString=“女性”;
}
最后一个字符串_gender=genderString;

如果(!email.matches(emailPattern)&&password.length()您已经从XML布局中引用了
onclick
方法

public void datePicker (View view)
    {
        DatePickerFragment fragment = new DatePickerFragment();
        fragment.show(getSupportFragmentManager(), "date");
    }
在活动中使用
onClickListener


希望有帮助:)

我不太确定您指的是什么,我知道在onCreate方法中将其调用为setOnClickListner。但我必须对哪段代码执行此操作?发布您的xml文件和崩溃报告问题是,当我在真实设备上运行它时,我在logcat中看不到任何内容,我不知道该怎么做。如果不设置filt,您将获得一些崩溃报告在你的日志中请分享日志