activity间数据传递实例_自定义短信发送器
2016-12-09 14:44
176 查看
一、项目目录结构
![](http://img.blog.csdn.net/20161209142705237)
二、activity_main.xml代码
二、activity_main.xml代码
<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.zgs.SendSMSByCustom.MainActivity" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:id="@+id/et_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入联系人号码" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/et_number" android:layout_alignParentRight="true" android:onClick="add" android:text="+" /> </RelativeLayout> <EditText android:id="@+id/et_sms_content" android:layout_width="match_parent" android:layout_height="250dp" android:gravity="top" android:hint="请输入发送短信的内容" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="insert" android:text="短信模板" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="sendSMS" android:text="发送短信" /> </LinearLayout>三、activity_contact.xml代码
<?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:id="@+id/lv_contact" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </LinearLayout>四、activity_template.xml代码
<?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:id="@+id/lv_template" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </LinearLayout>五、item_contact.xml代码
<?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="horizontal" > <TextView android:id="@+id/tv_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="张三" android:textColor="#000000" android:textSize="25sp" /> <TextView android:id="@+id/tv_phone" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textColor="#000000" android:textSize="25sp" android:text="110" /> </LinearLayout>六、item_template.xml代码
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:text="TextView" android:textColor="#000000" android:textAppearance="?android:attr/textAppearanceLarge" > </TextView>七、AndroidManifest.xml代码
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zgs.SendSMSByCustom" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" /> <uses-permission android:name="android.permission.SEND_SMS"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 在清单文件中配置新加的activity --> <activity android:name="com.zgs.SendSMSByCustom.ContactActivity" > </activity> <activity android:name="com.zgs.SendSMSByCustom.TemplateActivity" > </activity> </application> </manifest>八、MainActivity.java代码
package com.zgs.SendSMSByCustom; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.widget.EditText; public class MainActivity extends Activity { private EditText et_number; private EditText et_sms_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]获取我们关心的控件 et_number = (EditText) findViewById(R.id.et_number); et_sms_content = (EditText) findViewById(R.id.et_sms_content); } //点击+按钮跳转到联系人页面 public void add(View v){ //[1]创建意图对象,getApplicationContext()也可以获取context对象 Intent intent = new Intent(getApplicationContext(), ContactActivity.class); //[2]开启Activity // startActivity(intent); //[3]☆☆☆☆ 如果一个页面开启另外一个页面 并且当开启的这个页面关闭的时候 还要返回数据 使用下面这个方法开启Activity startActivityForResult(intent, 1); } //点击按钮 跳转到短信模板页面 public void insert(View v){ Intent intent = new Intent(this,TemplateActivity.class); //☆☆☆开启Activity有2种方式 //(1)如果想要开启的Activity的界面的数据 用 startActivityForResult(); //(2)如果就是简简单单页面的跳转 就用startActivity() startActivityForResult(intent, 2); } //点击按钮实现发送短信的逻辑 public void sendSMS(View v){ String number = et_number.getText().toString().trim(); String content = et_sms_content.getText().toString().trim(); //[1]获取smsManager的实例 SmsManager smsManager = SmsManager.getDefault(); //[1.1]如果短信内容过过多 发不出去 分条发送 ArrayList<String> divideMessages = smsManager.divideMessage(content); for (String div : divideMessages) { //[2]发送短信数据 smsManager.sendTextMessage(number, null, div, null, null); } } //当我们开启的Activity的页面关闭的时候这个方法会调用 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { //代表我要请求 ContactActivity的数据 String phone = data.getStringExtra("phone"); et_number.setText(phone); }else if (requestCode == 2) { //代表我要请求SmsTemplateActivity 的数据 String smscontent = data.getStringExtra("smscontent"); et_sms_content.setText(smscontent); } /*if (resultCode == 10) { //说明数据是由 ContactActivity返回 String phone = data.getStringExtra("name"); et_number.setText(phone); }else if (resultCode == 20) { //说明数据是由SmsTemplateActivity返回 String smscontent = data.getStringExtra("smscontent"); et_sms_content.setText(smscontent); } */ super.onActivityResult(requestCode, resultCode, data); } }九、ContactActivity.java代码
package com.zgs.SendSMSByCustom; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; public class ContactActivity extends Activity { private ArrayList<Contact> contactLists; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局 setContentView(R.layout.activity_contact); //[1]找到lv控件 ListView lv_contact = (ListView) findViewById(R.id.lv_contact); //[2]我想把手机当中 联系人的数据展示到listview上 等讲内容提供者在去获取真实数据 contactLists = new ArrayList<Contact>(); for (int i = 0; i < 10; i++) { Contact contact = new Contact(); contact.setName("张三"+i); contact.setPhone("1869100892"+i); contactLists.add(contact); } //[3]展示数据 设置数据适配器 lv_contact.setAdapter(new MyAdapter()); //[4]给listview的条目设置点击事件 lv_contact.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //[5]取出我们点中条目的数据 String phone = contactLists.get(position).getPhone(); System.out.println("phone:"+phone); //[6]把phone 返回给第一个页面 Intent intent = new Intent(); intent.putExtra("phone", phone); //[7]把数据返回给调用者 Call this to set the result that your activity will return to its caller. setResult(10, intent); //[8]关闭当前Activity mainActivity的onActivityResult方法就会执行 finish(); } }); } //创建数据适配器 private class MyAdapter extends BaseAdapter{ @Override public int getCount() { return contactLists.size(); } @Override public Object getItem(int position) { return contactLists.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null) { view = View.inflate(getApplicationContext(), R.layout.item_contact, null); }else { //复用历史缓存对象 view = convertView; } //找到我们关心控件 TextView tv_name = (TextView) view.findViewById(R.id.tv_name); TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone); //设置数据 tv_name.setText(contactLists.get(position).getName()); tv_phone.setText(contactLists.get(position).getPhone()); return view; } } }十、TemplateActivity.java代码
package com.zgs.SendSMSByCustom; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; public class TemplateActivity extends Activity { String objects[] = {"我在开会,请稍后联系","我在吃饭,请稍后联系","我在打代码,请稍后联系","我在开车,请稍后联系","我在约会,请稍后联系"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_template); //[1]找到lv控件 ListView lv = (ListView) findViewById(R.id.lv_template); //[2]创建数据适配器 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.item_template, objects); //[3]把数据展示到listview上 lv.setAdapter(adapter); //[4]给lv设置点击事件 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //[5]获取我们点中条目的数据 String smscontent = objects[position]; //[6]把这个数据返回给调用者 Intent intent = new Intent(); intent.putExtra("smscontent", smscontent); //[7]通过这个方法把数据返回给调用者 setResult(20, intent); //[8]要记得调用finish finish(); } }); } }十一、操作演示
相关文章推荐
- activity间数据传递实例_使用系统短信发送器发送数据
- 在Activity中通过Bundle传递自定义数据类型
- android中自定义数据类型在两个activity间的传递
- android 自定义AlertDialog 与Activity相互传递数据
- Android中如何实现两个Activity中传递自定义数据
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- Android 实例:在Activity 之间传递数据的intent
- 安卓开发-Activity的显示意图和隐式意图+实例+Activity界面间数据的传递实例
- Activity传递参数——传递自定义数据类型
- Activity经典实例一:两个Activity传递数据和对象
- 使用 Bundle 在 Activity 间传递数据 activity1跳转到activity2中,然后activity2中返回值给activity1中 实例
- Activity经典实例一:两个Activity传递数据和对象
- 在Activity中通过Bundle传递自定义数据类型
- Android中Service实时向Activity传递数据实例分析
- [android]Android怎样能有两个Activity传递的自定义数据
- Activity经典实例一:两个Activity传递数据和对象
- 使用意图在Activity之间传递数据小插曲__传递自定义的序列化对象
- activity间数据传递实例_人品计算器
- 返回Activity时传递数据(如发送短信时引用联系人)
- Dialog与activity之间用监听传递数据。此篇文章通用于所有自定义监听方法