如何在特定的EditText中设置日期

时间:2015-07-31 05:45:16

标签: java android

我有4个imageview和4个edittext。我想,当我点击一个图像意味着写入edittext1,当第二个被点击时,它应该写入edittext2反之亦然。 我写了一些代码,但它抛出了一个错误..请修复它

这是我的代码:

package com.h2o;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import java.util.Calendar;



public class AccountActivity extends FragmentActivity {

    EditText dob,serviceFrom,prevServiceFrom,prevServiceTo,et;

    ImageView pickDob,pickserviceFrom,pickprevServiceFrom,pickprevServiceTo;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.account);

        dob = (EditText)findViewById(R.id.dobText);
        serviceFrom = (EditText) findViewById(R.id.serviceFromText);
        prevServiceFrom = (EditText) findViewById(R.id.prev_serviceFromText);
        prevServiceTo = (EditText) findViewById(R.id.serviceToText);
        pickDob = (ImageView)findViewById(R.id.datedob);
        pickserviceFrom = (ImageView)findViewById(R.id.serviceFrom);
        pickprevServiceFrom = (ImageView)findViewById(R.id.prev_serviceFrom);
        pickprevServiceTo = (ImageView)findViewById(R.id.prev_serviceTo);

        String item = getIntent().getStringExtra("item");
        Fragment fragment = null;

        switch(item) {
            case "Balance": fragment = new BalanceFragment(); break;
            case "Personal": fragment = new PersonalFragment(); break;
            case "Work": fragment = new WorkFragment(); break;
            case "Address": fragment = new AddressFragment(); break;
            case "Vehicle": fragment = new VehicleFragment(); break;
            case "Preference": fragment = new PreferenceFragment(); break;
            case "About": fragment = new AboutFragment(); break;
            case "Settings": fragment = new SettingsFragment(); break;
            case "Help": fragment = new HelpFragment(); break;
            default: fragment = new DefaultFragment(); break;
        }

        if (savedInstanceState == null) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//            AccountFragment fragment = new AccountFragment();
            transaction.replace(R.id.account_frame, fragment);
            transaction.commit();
        }
        setTitle(item);
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    }
    //Calendar picker
    public void selectDate(View view) {

        DialogFragment newFragment = new SelectDateFragment();
        newFragment.show(getSupportFragmentManager(), "DatePicker");
    }

    public void populateSetDate( EditText et,int year, int month, int day) {

        et.setText(month + "/" + day + "/" + year);
    }



    public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {




        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar calendar = Calendar.getInstance();
            int yy = calendar.get(Calendar.YEAR);
            int mm = calendar.get(Calendar.MONTH);
            int dd = calendar.get(Calendar.DAY_OF_MONTH);

            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, yy, mm, dd);
        }

        public void onDateSet(DatePicker view, int yy, int mm, int dd) {
            EditText et = dob;
            if (view.equals(pickDob))
            et = dob;
            if (view.equals(pickserviceFrom))
            et = serviceFrom;
            if (view.equals(pickprevServiceFrom))
            et = prevServiceFrom;
            if (view.equals(pickprevServiceTo))
            et = prevServiceTo;

            populateSetDate(et,yy, mm + 1, dd);
        }
    }

}

我的logcat:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
            at com.h2o.AccountActivity.populateSetDate(AccountActivity.java:94)
            at com.h2o.AccountActivity$SelectDateFragment.onDateSet(AccountActivity.java:127)
            at android.app.DatePickerDialog.onClick(DatePickerDialog.java:134)
            at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:160)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

0 个答案:

没有答案