项目源代码下载地址:http://download.csdn.net/detail/itjavawfc/8177841
这个小程序学习到的内容:
1)进一步理解Intent 2开启activity获取返回值 3)Adapter的运用ListView的点击事件
4)Intent发送数据、Activity关闭返回到上一个Activity等知识。
小程序需求:1)单击选择短息就可以看到备用短息页面,点击其中一条短息后自动将短息填到短息框中
2)单击选择电话号码就可以看到备用电话号码页面,点击其中一条号码后自动将号码填写到号码输入框中
3)实现发送短信功能
代码如下:
public class MainActivity extends Activity { private EditText et_content; private EditText et_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_content=(EditText) findViewById(R.id.et_content); et_number=(EditText) findViewById(R.id.et_number); } public void selectSms(View view) { Intent intent=new Intent(this,ListSmsActivity.class); //startActivity(intent); //第二个参数resquestCode请求码 startActivityForResult(intent, 0); } public void selectNum(View view){ Intent intent=new Intent(this,ListNumberActivity.class); startActivityForResult(intent,1); } //当开启的Activity关闭结束时 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(data!=null){ //将回传的数据取出来 String smsinfo=data.getStringExtra("smsinfo"); if(resultCode==0){ //设置短信内容 et_content.setText(smsinfo); }else if(resultCode==1){ //设置短信内容 et_number.setText(smsinfo); } } super.onActivityResult(requestCode, resultCode, data); } public void sendSms(View view){ String content=et_content.getText().toString(); String number=et_number.getText().toString(); SmsManager.getDefault().sendTextMessage(number, null, content, null, null); Toast.makeText(this, "发送成功", 0).show(); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.duanxin.MainActivity" > <EditText android:id="@+id/et_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入电话号码" /> <EditText android:id="@+id/et_content" android:lines="5" android:inputType="textMultiLine" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入电话号码" /> <Button android:onClick="selectSms" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="选择短信" /> <Button android:onClick="selectNum" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="选择电话号码" /> <Button android:onClick="sendSms" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="发送短信" /> </LinearLayout>
短信的Activity:
public class ListSmsActivity extends Activity { private ListView lv; private String[] objects={ "晚风徐徐,星光灿烂,月光皎洁,这一切是那么的美好。在这个美丽的夜晚,祝你美梦连连!", "每当夜晚降临的时候,天边的星星是我关注你的眼睛,月儿弯弯,它送去我最真心的祝福:晚安,做个好梦哦。", "关闭灯光,让心平静,呼吸均匀,完全放松,无牵无挂,反复默念,睡眠心法。愿我的支言片语可以让你晚安,美梦!", "满天繁星,是我每天为你守望的眼睛;万家灯火,是我每夜为你守候的执着,守望的心,守候的情,只望你拥有一个美丽夜晚。", "想你的时候最充实,念你的时候最逍遥,牵挂老是跟你跑,问候把你最先到,愿你日日乐陶陶,祝你夜夜梦美好;晚安。" }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms); lv=(ListView) findViewById(R.id.lv); //理解Adapter每个参数的含义:this【上下文】,R.layout.sms_item【布局文件】,R.id.tv_info【你要展示的View】,objects【展示的数据项】 lv.setAdapter(new ArrayAdapter<String>(this, R.layout.sms_item, R.id.tv_info, objects)); //添加点击事件 lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //根据数据项选择的位置珀斯tion取得单击的那条数据 String smsinfo=objects[position]; Intent data=new Intent(); data.putExtra("smsinfo", smsinfo); //设置数据,第一个参数为结果码 setResult(0,data); //调用该方法,activity就关闭了,并回传数据 finish(); } }); } }其布局件如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" ></ListView> </LinearLayout>对应的AdapterView的文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableLeft="@android:drawable/star_big_on" android:gravity="center_vertical" android:text="我爱你" /> </LinearLayout>
电话号码的Activity:
public class ListNumberActivity extends Activity { private ListView lv; private String[] objects={ "23125", "456451", "3153", "513531", "2135484563" }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_sms); lv=(ListView) findViewById(R.id.lv); lv.setAdapter(new ArrayAdapter<String>(this, R.layout.sms_item, R.id.tv_info, objects)); lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String smsinfo=objects[position]; Intent data=new Intent(); data.putExtra("smsinfo", smsinfo); //设置数据 setResult(1,data); //调用该方法,activity就关闭了,并回传数据 finish(); } }); } }对应的布局文件和发送短信的文件一模一样
最终实现效果: