很久没写了,最近忙死了。晚上敲点儿代码也不想来这儿贴出来。最郁闷的是今天搞了一天Flex界面,结果要换一种方式显示,大半天的敲得代码又得重新写。我就一装满水的杯具啊。
DatePickerDialog:
本想将时间Dialog上显示的English改为中文的,没找到方法,估计得改它的源码。以后用到再说吧,哈哈。
package com.lhw.android.datePickerDialogTest;
import java.util.Calendar;
import java.util.Locale;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
public class MainActivity extends Activity implements OnDateSetListener,OnClickListener {
private Button btn;
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button)this.findViewById(R.id.btn);
btn.setOnClickListener(this);
tv=(TextView)this.findViewById(R.id.tv);
}
public void onClick(View arg0) {
Calendar c=Calendar.getInstance(Locale.CHINA);
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
Log.e("MainActivity",String.valueOf(month));
int day=c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog=new DatePickerDialog(this,this,year,month,day);
dialog.show();
}
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
//Calendar月份是从0开始的,所以要在月份前加一
tv.setText(year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日");
}
}
ListAdapter:
早在文件管理例子中就用过这个东西,今天算是复习下吧
网上例子里的android.provider.Contacts.People类在2.1里面已经被标识为:
This class is deprecated. see ContactsContract.
package com.lhw.android.callcontack;
import android.app.ListActivity;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class MainActivity extends ListActivity {
private String[] names;
private int[] tos;
private SimpleCursorAdapter adapter;
private Intent callIntent;
private long phoneId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
//Cursor,该接口提供从数据库提取信息返回结果中随机读写访问
//ContentResolver 提供应用程序访问Content模型
//ContentResolver.query()抽取给定的URI,返回一个在结果之上的Cursor
Cursor c=getContentResolver().query(Contacts.CONTENT_URI,null, null, null, null);
//该方法允许Activity基于Activity的生命周期来为你处理管理给定的Cursor的生命周期
startManagingCursor(c);
//新建用户名数组People类用于列出联系人People.NAME得到联系人姓名
names=new String[]{Contacts.DISPLAY_NAME};
//创建一个TextView引用数组用来放置获取的People.NAME
tos=new int[]{R.id.row_entry};
//创建一个简单的适配器从一个cursor指针到TextView或是ImageView的map专栏适配器。
//构造方法(Context,layout,Cursor,from,to),第一参数是设备上下文,第二个参数是布局文
//件,第三个参数是指向联系人URI的Cursor指针,form代表来源的字符串(联系人名),to把联系人名放到
//的地方(TextView)
adapter=new SimpleCursorAdapter(this,R.layout.main,c,names,tos);
this.setListAdapter(adapter);
}catch(Exception e){
Toast.makeText(this,"联系人读取错误",Toast.LENGTH_LONG).show();
Log.e(this.getLocalClassName(),e.getMessage());
}
}
@Override
protected void onListItemClick(ListView lv,View v,int position,long id){
//创建一个带有Call动作的Intent
callIntent=new Intent(Intent.ACTION_CALL);
//通过选中的Items位置来获取相应的联系人指针Cursor
Cursor c=(Cursor)adapter.getItem(position);
//获取相应联系人电话号码
//getLong()返回请求数据的一个长整型
//为给定的列,返回基于0的索引值
//People.PRIMARY_PHONE_ID 获取主键电话号码
phoneId=c.getLong(c.getColumnIndex(Contacts.LOOKUP_KEY));
//为Intent设置操作的数据
//ContentUris操作带有数据内容的Uri的实用方法、它们带有"Content"体制
//withAppendedId()把给定的ID添加到path后面第一个参数是开始的,后面参数是添加的
callIntent.setData(ContentUris.withAppendedId(Contacts.CONTENT_URI,phoneId));
startActivity(callIntent);
}
}
最后需要在AndroidManifest.xml文件中声明相关权限请求,
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
以前模拟器不能输入中文,搞了半天原来是要切换下,点击英文就切换到中文了