【问题标题】:how to show current date in edit text view如何在编辑文本视图中显示当前日期
【发布时间】:2016-04-26 06:24:14
【问题描述】:

这是我的代码

package com.clip.android;
/**
 * 
 * @author abhishek
 *
 */

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.Toast;


public class ClaimRegister extends ClaimActivity implements OnClickListener{

    EditText polid;
    /*DatePicker claimDate;*/
    String userValue;
    String getClaimDate;
    Spinner Spinner;
    String clmType;
    ImageButton calIcon;
    EditText claimDate;
    /*TextView b1;*/
    double a = 4.32;
    double b = Math.pow(10.0,8.0);
    int year,day,month;
    List<String> claimTypes=new ArrayList<String>();
/*    List<Customer> customers = new ArrayList<Customer>();*/


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_claim_register);
        setHeader("Register Your Claim", true, true);
        claimDate = (EditText)findViewById(R.id.editText1);
        polid = (EditText)findViewById(R.id.polid);
        /*claimDate = (DatePicker)findViewById(R.id.dp);*/
        Spinner=(Spinner) findViewById(R.id.spin);
        userValue = polid.getText().toString();
        calIcon = (ImageButton)findViewById(R.id.imageButton1); 
        calIcon.setOnClickListener(new Button.OnClickListener(){

            public void onClick(View v) {
                // TODO Auto-generated method stub
                final Calendar c = Calendar.getInstance();

                year = c.get(Calendar.YEAR);
                month = c.get(Calendar.MONTH);
                day = c.get(Calendar.DAY_OF_MONTH);
                /*claimDate.setMinDate((long)(c.getTimeInMillis()-(a*b)));
                claimDate.init(year, month, day, null);*/

                 claimDate.setText(String.valueOf(c.getTimeInMillis()-(a*b)));


                DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener()  {
                     public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth)
                        {   
                             Calendar cl = Calendar.getInstance();
                                cl.set(year, monthOfYear, dayOfMonth-1);
                                if(cl.before(Calendar.getInstance())){
                                    claimDate.setText(dayOfMonth+"-"+(monthOfYear)+"-"+year);
                                }else {
                                    claimDate.setText("");
                                    Toast.makeText(ClaimRegister.this, "Date Shold Be Within Current Date.",    Toast.LENGTH_SHORT).show();
                                    return;
                                }
                                year = year; 
                                month = monthOfYear; 
                                day = dayOfMonth;

                        }
                }, year, month, day;
        ((Dialog) datePickerListener).show();

               }
            });
    AsyncCall drop = new AsyncCall();
    drop.execute();
    }

    private class AsyncCall extends AsyncTask<String, Void, Void>{

        @Override
        protected Void doInBackground(String... params) {
            Log.d("doBack", "0000");
            claimTypes = com.clip.webservice.GetAQuote.GetLineofBusiness("CLMTYPE", "getClmType");


            return null;
        }

        protected void onPostExecute(Void result) 
        {
            Log.d("onPost", "lol");
                    ArrayAdapter<String> adapter =  new ArrayAdapter<String>(ClaimRegister.this, android.R.layout.simple_spinner_dropdown_item,claimTypes);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    Log.d("onPost", "123");
                    Spinner.setAdapter(adapter);
                    Log.d("onPost", "hiiii");
                    Spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                        public void onItemSelected(AdapterView<?> parent,
                                View view, int position, long id) {
                                String item = parent.getItemAtPosition(position).toString();
                                Toast.makeText(getApplicationContext(), "type = "+ item, Toast.LENGTH_LONG).show();
                                clmType= Spinner.getSelectedItem().toString();
                        }

                        public void onNothingSelected(AdapterView<?> parent) {
                            // TODO Auto-generated method stub
                            String item=parent.getSelectedItem().toString();
                            Toast.makeText(getApplicationContext(), "type = "+ item, Toast.LENGTH_LONG).show();
                            clmType= Spinner.getSelectedItem().toString();
                        }

                    });

                     }
                    }


    public void submit(View view)
    {
        userValue = polid.getText().toString();

        if(userValue.trim().equals("")&& userValue != null){
            Toast.makeText(this, "Policy Id is required", Toast.LENGTH_LONG).show();
        }
        else{
        Intent intent = new Intent(this,ClaimRegisterPage.class);
        intent.putExtra("getclmType", clmType);
        intent.putExtra("userValue", userValue);
        Log.d("In submit", "userValue = "+userValue);
        startActivity(intent);
        }
    }
}

错误:-

04-26 11:45:04.450: E/AndroidRuntime(2813): FATAL EXCEPTION: main
04-26 11:45:04.450: E/AndroidRuntime(2813): Process: com.clip.android, PID: 2813
04-26 11:45:04.450: E/AndroidRuntime(2813): java.lang.ClassCastException: com.clip.android.ClaimRegister$1$1 cannot be cast to android.app.Dialog
04-26 11:45:04.450: E/AndroidRuntime(2813):     at com.clip.android.ClaimRegister$1.onClick(ClaimRegister.java:96)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at android.view.View.performClick(View.java:5198)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at android.view.View$PerformClick.run(View.java:21147)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at android.os.Handler.handleCallback(Handler.java:739)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at android.os.Looper.loop(Looper.java:148)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at android.app.ActivityThread.main(ActivityThread.java:5417)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at java.lang.reflect.Method.invoke(Native Method)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
04-26 11:45:04.450: E/AndroidRuntime(2813):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

什么设置当前日期为默认日期,我想允许用户比当前日期晚 15 天不低于该日期。请帮助解决这个问题。

【问题讨论】:

  • ((Dialog) datePickerListener).show(); - datePickerListener 不是 Dialog
  • tks,Mike 我该如何解决这个问题,还有其他方法吗
  • 让 Shree 在他们的回答中加入一个例子。

标签: android


【解决方案1】:

DatePickerDialogDialogDatePickerDialog.OnDateSetListener 不是可以施放的 Dailog。所以显示DatePickerDialog 而不是显示datePickerListener。这是错误线

 ((Dialog) datePickerListener).show();

查看example 如何创建和使用DatePickerDialog

【讨论】:

  • 我知道了,但是有办法解决这个问题
  • 我展示的示例非常简单,您可以轻松理解,但是您的代码似乎太复杂了。您可以使用showDialog(id) 轻松显示对话框。
  • 但我想允许用户从当前日期开始设置到前 15 天不超过那个。如何做到这一点???Shree
  • @Abhishek 见this。您可能会发现它很有帮助
  • 我解决了我的问题,谢谢大家......我还在下面发布了我解决的代码它工作正常............
【解决方案2】:
//Current date
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());

// editText is the EditText  that should display it
editText.setText(currentDateTimeString);

对于 15 天的限制,您可以在设置日期之前使用 if else 条件来编辑文本。因此,如果用户选择 15 天之前的日期,则编辑文本保持为空

【讨论】:

    【解决方案3】:

    我注意到代码中有几个错误, 1) 替换

    calIcon.setOnClickListener(new Button.OnClickListener()
    

    calIcon.setOnClickListener(new View.OnClickListener() 
    

    2) 下面的类型转换导致崩溃

     ((Dialog) datePickerListener).show();
    

    您应该创建一个 Dialog 实例,使用 require 属性构建它并设置监听器。然后调用它的 show() 方法。参考,Datepicker: How to popup datepicker when click on button and store value in variable

    【讨论】:

    • 是的,((对话框) datePickerListener).show();这对我来说很崩溃
    【解决方案4】:

    已解决的代码

    package com.clip.android;
    /**
     * 
     * @author abhishek
     *
     */
    
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.DatePicker;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    
    public class ClaimRegister extends ClaimActivity implements OnClickListener{
    
        EditText polid;
        String userValue;
        String getClaimDate;
        Spinner Spinner;
        String clmType;
        ImageButton calIcon;
        EditText claimDate;
        double a = 1.296;
        double b = Math.pow(10.0,9.0);
    
        static final int DATE_PICKER_ID = 0; 
        int year,day,month;
        List<String> claimTypes=new ArrayList<String>();
    
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_claim_register);
            setHeader("Register Your Claim", true, true);
            claimDate = (EditText)findViewById(R.id.editText1);
            polid = (EditText)findViewById(R.id.polid);
            Spinner=(Spinner) findViewById(R.id.spin);
            userValue = polid.getText().toString();
            calIcon = (ImageButton)findViewById(R.id.imageButton1); 
            claimDate.setEnabled(false);
    
            final Calendar c = Calendar.getInstance();
            year  = c.get(Calendar.YEAR);
            month = c.get(Calendar.MONTH);
            day   = c.get(Calendar.DAY_OF_MONTH);
    
    
            claimDate.setText(new StringBuilder()
            // Month is 0 based, just add 1
            .append(day).append("-").append(month + 1).append("-")
            .append(year).append(" "));
            calIcon.setOnClickListener(new OnClickListener() {
    
                @SuppressWarnings("deprecation")
                public void onClick(View v) {
    
                    // On button click show datepicker dialog 
    
    
                    showDialog(DATE_PICKER_ID);
                }
    
            });
    
    
        AsyncCall drop = new AsyncCall();
        drop.execute();
        }
    
        private class AsyncCall extends AsyncTask<String, Void, Void>{
    
            @Override
            protected Void doInBackground(String... params) {
                Log.d("doBack", "0000");
                claimTypes = com.clip.webservice.GetAQuote.GetLineofBusiness("CLMTYPE", "getClmType");
    
    
                return null;
            }
    
            protected void onPostExecute(Void result) 
            {
                Log.d("onPost", "lol");
                        ArrayAdapter<String> adapter =  new ArrayAdapter<String>(ClaimRegister.this, android.R.layout.simple_spinner_dropdown_item,claimTypes);
                        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        Log.d("onPost", "123");
                        Spinner.setAdapter(adapter);
                        Log.d("onPost", "hiiii");
                        Spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                            public void onItemSelected(AdapterView<?> parent,
                                    View view, int position, long id) {
                                    String item = parent.getItemAtPosition(position).toString();
                                    Toast.makeText(getApplicationContext(), "type = "+ item, Toast.LENGTH_LONG).show();
                                    clmType= Spinner.getSelectedItem().toString();
                            }
    
                            public void onNothingSelected(AdapterView<?> parent) {
                                // TODO Auto-generated method stub
                                String item=parent.getSelectedItem().toString();
                                Toast.makeText(getApplicationContext(), "type = "+ item, Toast.LENGTH_LONG).show();
                                clmType= Spinner.getSelectedItem().toString();
                            }
    
                        });
    
                         }
                        }
    
        protected Dialog onCreateDialog(int id) {
            switch (id) {
            case DATE_PICKER_ID:
    
                // open datepicker dialog. 
                // set date picker for current date 
                // add pickerListener listner to date picker
                //disabled the dates lesser than 15 days from current date onload of date picker dialog 
                DatePickerDialog dp = new DatePickerDialog(this, pickerListener, year, month,day);
                    Calendar c = Calendar.getInstance();
                    dp.getDatePicker().setMinDate(((long)(c.getTimeInMillis()-(a*b))));
                    return dp;
            }
            return null;
        }
    
        private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {
    
            // when dialog box is closed, below method will be called.
            public void onDateSet(DatePicker view, int selectedYear,
                    int selectedMonth, int selectedDay) {
                  year  = selectedYear;
                  month = selectedMonth;
                  day   = selectedDay;
    
                // Show selected date 
    
                claimDate.setText(new StringBuilder().append(day)
                        .append("-").append(month + 1).append("-").append(year)
                        .append(" "));
    
               }
            };
    
    
        public void submit(View view)
        {
            userValue = polid.getText().toString();
                //Validation for Policy Id since it's mandatory
            if(userValue.trim().equals("")&& userValue != null){
                Toast.makeText(this, "Policy Id is required", Toast.LENGTH_LONG).show();
            }
            else{
            Intent intent = new Intent(this,ClaimRegisterPage.class);
            intent.putExtra("getclmType", clmType);
            intent.putExtra("userValue", userValue);
            Log.d("In submit", "userValue = "+userValue);
            startActivity(intent);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多