Question

I need to display two datepickers in a child activity of an activitygroup in a tabbed activity. the code for the two textviews and to buttons to display the date is:

  incorp_date=(TextView)findViewById(R.id.edt_incorpdate);
    incorp_date_image=(Button)findViewById(R.id.incorp_date);


    incorp_date_cal=Calendar.getInstance();

    incorp_date_image.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            showDialog(DATE_PICKER_INCORP);
        }
    });

    final Calendar c = Calendar.getInstance();
    incorp_year = c.get(Calendar.YEAR);
    incorp_month = c.get(Calendar.MONTH);
    incorp_day = c.get(Calendar.DAY_OF_MONTH);

    /* display the current date (this method is below)  */
    updateIncorpDisplay();


    estb_date=(TextView)findViewById(R.id.edt_estabdate);
    estb_date_image=(Button)findViewById(R.id.estb_date);
    estb_date_cal=Calendar.getInstance();

    estb_date_image.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            showDialog(DATE_PICKER_ESTB);
        }
    });
    final Calendar c1 = Calendar.getInstance();
    estb_year = c1.get(Calendar.YEAR);
    estb_month = c1.get(Calendar.MONTH);
    estb_day = c1.get(Calendar.DAY_OF_MONTH);

    /* display the current date (this method is below)  */
    updateEstbDisplay();

the code to display the datepicker dialog is:

incorp_dateListener=new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            // TODO Auto-generated method stub
            incorp_year = year;
            incorp_month = monthOfYear;
            incorp_day = dayOfMonth;
            updateIncorpDisplay();
        }
    };

    estb_dateListener=new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            // TODO Auto-generated method stub
            estb_year = year;
            estb_month = monthOfYear;
            estb_day = dayOfMonth;
            updateEstbDisplay();
        }
    };
  @Override
protected Dialog onCreateDialog(int id) {

    switch(id){
        case DATE_PICKER_INCORP:
                return new DatePickerDialog(getParent(), incorp_dateListener, incorp_year, incorp_month, incorp_day); 
            case DATE_PICKER_ESTB:
                return new DatePickerDialog(getParent(), estb_dateListener, estb_year, estb_month, estb_day);
    }
        return null;
}

I am not able to display the datepicker dialog. the application force closes when i click the button and an exception of BadTokenException is raised.. what should i do??? I cant seem to figure out what the problem is??? I think maybe its because its a child activity of an activitygroup.. but cant find any relevant solution.. Please help!!!!

Was it helpful?

Solution

Try Something like this,First you create tabcontext object in your TabActivity Class.like this

package com.loanreminder;

import android.app.TabActivity;
import android.os.Bundle;

/**
 * @author Adil Soomro
 * 
 */
public class TabSample extends TabActivity {
    /** Called when the activity is first created. */
    public static TabSample tabContext;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabhost);
        tabContext = this;

    }

}

After Use this Object Like this in Your activity.

protected Dialog onCreateDialog(int id) {

    switch(id){
        case DATE_PICKER_INCORP:
                return new DatePickerDialog(TabSample.tabContext, incorp_dateListener, incorp_year, incorp_month, incorp_day); 
            case DATE_PICKER_ESTB:
                return new DatePickerDialog(TabSample.tabContext, estb_dateListener, estb_year, estb_month, estb_day);
    }
        return null;
}

OTHER TIPS

Do something like this

     switch (id) {
case DATE_DIALOG_ID:
 return new DatePickerDialog(getParent(),
             mDateSetListener,
             mYear, mMonth, mDay);
case DATE_DIALOG_ID_RETURN:
 return new DatePickerDialog(getParent(),
   mDateSetListenerreturn,
             mYear, mMonth, mDay);     
 }

I got this solution from Android: DatePicker not working inside Actvity

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top