--------------------------------------------CallUp.java-------------------------------------

packagecom.ch07.callback;

/**

*

*项目名称:com.ch07.callback

*类名称:CallUp

*类描述:打电话类

*创建人:fy

*创建时间:2012-11-9下午6:28:38

*Copyright(c)方勇-版权所有

*/

publicclassCallUp{

/*打电话,回调方法*/

publicvoidcallme(OnCallBackonCallBack){

onCallBack.execute();

}

/*接口作为参数传递*/

publicinterfaceOnCallBack{

voidexecute();

}

}

--------------------------------------------TestCall.java-------------------------------------

packagecom.ch07.callback;

/**

*

*场景描述:

*

*java回调函数

*什么是回调?(What)

*精妙比喻:我把手机号码给你,你通过手机号码联系我

*具体解释:

*我把我的手机号码给你,你通过电话号码打电话联系我

*我把我的手机号码给你,你通过电话号码发短信联系我

*共同的部分:

*我把我的手机号码给你,你通过电话号码(****)联系我

*不同的部分

*每次在使用的时候,选择是打电话或是发短信。

*回调都做了什么?

*将变动与不变的代码分离,变动的代码在每次使用时确认

*什么情况使用回调?为什么要使用回调?

*步骤固定,但有一部分内容只有在使用的时候才能知道。

*

*/

publicclassTestCall{

publicstaticvoidmain(String[]args){

/*实例化电话类*/

CallUpcallUp=newCallUp();

/*拨打对方的电话,只需要知道对方的手机号码*/

callUp.callme(newCallUp.OnCallBack(){

@Override

publicvoidexecute(){

System.out.println("回调方法");

}

});

}

}

--------------------------------------------DatePickerDialog.java---------------------------------

/*

*Copyright(C)2007TheAndroidOpenSourceProject

*

*LicensedundertheApacheLicense,Version2.0(the"License");

*youmaynotusethisfileexceptincompliancewiththeLicense.

*YoumayobtainacopyoftheLicenseat

*

*http://www.apache.org/licenses/LICENSE-2.0

*

*Unlessrequiredbyapplicablelaworagreedtoinwriting,software

*distributedundertheLicenseisdistributedonan"ASIS"BASIS,

*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.

*SeetheLicenseforthespecificlanguagegoverningpermissionsand

*limitationsundertheLicense.

*/

packageandroid.app;

importandroid.content.Context;

importandroid.content.DialogInterface;

importandroid.content.DialogInterface.OnClickListener;

importandroid.os.Bundle;

importandroid.text.format.DateUtils;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.widget.DatePicker;

importandroid.widget.DatePicker.OnDateChangedListener;

importcom.android.internal.R;

importjava.util.Calendar;

/**

*Asimpledialogcontainingan{@linkandroid.widget.DatePicker}.

*

*<p>Seethe<ahref="{@docRoot}resources/tutorials/views/hello-datepicker.html">DatePicker

*tutorial</a>.</p>

*/

publicclassDatePickerDialogextendsAlertDialogimplementsOnClickListener,

OnDateChangedListener{

privatestaticfinalStringYEAR="year";

privatestaticfinalStringMONTH="month";

privatestaticfinalStringDAY="day";

privatefinalDatePickermDatePicker;

privatefinalOnDateSetListenermCallBack;

privatefinalCalendarmCalendar;

privatebooleanmTitleNeedsUpdate=true;

/**

*Thecallbackusedtoindicatetheuserisdonefillinginthedate.

*/

publicinterfaceOnDateSetListener{

/**

*@paramviewTheviewassociatedwiththislistener.

*@paramyearTheyearthatwasset.

*@parammonthOfYearThemonththatwasset(0-11)forcompatibility

*with{@linkjava.util.Calendar}.

*@paramdayOfMonthThedayofthemonththatwasset.

*/

voidonDateSet(DatePickerview,intyear,intmonthOfYear,intdayOfMonth);

}

/**

*@paramcontextThecontextthedialogistorunin.

*@paramcallBackHowtheparentisnotifiedthatthedateisset.

*@paramyearTheinitialyearofthedialog.

*@parammonthOfYearTheinitialmonthofthedialog.

*@paramdayOfMonthTheinitialdayofthedialog.

*/

publicDatePickerDialog(Contextcontext,

OnDateSetListenercallBack,

intyear,

intmonthOfYear,

intdayOfMonth){

this(context,0,callBack,year,monthOfYear,dayOfMonth);

}

/**

*@paramcontextThecontextthedialogistorunin.

*@paramthemethethemetoapplytothisdialog

*@paramcallBackHowtheparentisnotifiedthatthedateisset.

*@paramyearTheinitialyearofthedialog.

*@parammonthOfYearTheinitialmonthofthedialog.

*@paramdayOfMonthTheinitialdayofthedialog.

*/

publicDatePickerDialog(Contextcontext,

inttheme,

OnDateSetListenercallBack,

intyear,

intmonthOfYear,

intdayOfMonth){

super(context,theme);

mCallBack=callBack;

mCalendar=Calendar.getInstance();

ContextthemeContext=getContext();

setButton(BUTTON_POSITIVE,themeContext.getText(R.string.date_time_done),this);

setIcon(0);

LayoutInflaterinflater=

(LayoutInflater)themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

Viewview=inflater.inflate(R.layout.date_picker_dialog,null);

setView(view);

mDatePicker=(DatePicker)view.findViewById(R.id.datePicker);

mDatePicker.init(year,monthOfYear,dayOfMonth,this);

updateTitle(year,monthOfYear,dayOfMonth);

}

publicvoidonClick(DialogInterfacedialog,intwhich){

tryNotifyDateSet();

}

publicvoidonDateChanged(DatePickerview,intyear,

intmonth,intday){

mDatePicker.init(year,month,day,this);

updateTitle(year,month,day);

}

/**

*Getsthe{@linkDatePicker}containedinthisdialog.

*

*@returnThecalendarview.

*/

publicDatePickergetDatePicker(){

returnmDatePicker;

}

/**

*Setsthecurrentdate.

*

*@paramyearThedateyear.

*@parammonthOfYearThedatemonth.

*@paramdayOfMonthThedatedayofmonth.

*/

publicvoidupdateDate(intyear,intmonthOfYear,intdayOfMonth){

mDatePicker.updateDate(year,monthOfYear,dayOfMonth);

}

privatevoidtryNotifyDateSet(){

if(mCallBack!=null){

mDatePicker.clearFocus();

mCallBack.onDateSet(mDatePicker,mDatePicker.getYear(),

mDatePicker.getMonth(),mDatePicker.getDayOfMonth());

}

}

@Override

protectedvoidonStop(){

tryNotifyDateSet();

super.onStop();

}

privatevoidupdateTitle(intyear,intmonth,intday){

if(!mDatePicker.getCalendarViewShown()){

mCalendar.set(Calendar.YEAR,year);

mCalendar.set(Calendar.MONTH,month);

mCalendar.set(Calendar.DAY_OF_MONTH,day);

Stringtitle=DateUtils.formatDateTime(mContext,

mCalendar.getTimeInMillis(),

DateUtils.FORMAT_SHOW_DATE

|DateUtils.FORMAT_SHOW_WEEKDAY

|DateUtils.FORMAT_SHOW_YEAR

|DateUtils.FORMAT_ABBREV_MONTH

|DateUtils.FORMAT_ABBREV_WEEKDAY);

setTitle(title);

mTitleNeedsUpdate=true;

}else{

if(mTitleNeedsUpdate){

mTitleNeedsUpdate=false;

setTitle(R.string.date_picker_dialog_title);

}

}

}

@Override

publicBundleonSaveInstanceState(){

Bundlestate=super.onSaveInstanceState();

state.putInt(YEAR,mDatePicker.getYear());

state.putInt(MONTH,mDatePicker.getMonth());

state.putInt(DAY,mDatePicker.getDayOfMonth());

returnstate;

}

@Override

publicvoidonRestoreInstanceState(BundlesavedInstanceState){

super.onRestoreInstanceState(savedInstanceState);

intyear=savedInstanceState.getInt(YEAR);

intmonth=savedInstanceState.getInt(MONTH);

intday=savedInstanceState.getInt(DAY);

mDatePicker.init(year,month,day,this);

}

}

<!--EndFragment-->

更多相关文章

  1. 不仅是微软和诺基亚,谁都无法 fork Android,因为它就没法 fork
  2. Android:微软的金钱机器(更新)
  3. Android SDK 1.0 电话号码的例子(Demo)
  4. 怎么去掉联系人、通话记录、拨号列表界面中的电话号码中间的空格
  5. Android之实现手机号码拦截
  6. [Android] Android下实现电话号码归属地的查询
  7. android 取手机号码
  8. 五成Android设备要向微软支付专利费

随机推荐

  1. AndroidManifest.xml解析(较详细)
  2. Android(安卓)Handler多线程详解
  3. android 参考站点、资料
  4. android 关于2.2版本之前的流量统计
  5. Android 2.1读取手机通讯录
  6. android 怎样通过暗码启动应用程序
  7. Android Eclipse Logcat 没有任何的信息
  8. 你知道Log.isLoggable
  9. Mobile Detect Class
  10. 如何判断是否可以使用某个Intent