编写Activity的基本步骤:
1.定义Activity类的子类SecondActivity
2.在ActivityManifest.xml配置定义的组件
3.定义布局文件activity_second.xml
4.重写Activity的onCreate(),加载布局文件
启动一个Activtiy
一般启动:
带回调启动:
如何携带额外数据
intent.putExtra(name,value)
如何获取携带额外数据
xxx.intent.getxxxExtra(name)
如何得到启动的intent
Intent getIntent()
结束一个Activity
一般结束
finish()
带结果的结束
setResult(int resultCode , Intent data)
finish()
Activity生命周期与状态
Activity的TaskStack
在Activity中,系统用taskStack 结构来存储管理启动的Activity对象
一个应用启动,系统就会为其创建一个对应的taskStack来存储并管理该应用的Activity对象
只有最上面的任务栈的栈顶的Activity才能显示在窗口中
Activity的launchMode
standard:
标准模式,每次调用startActivity()方法就会产生一个新的实例
singleTop
如果已经有一个实例位于Activity栈的顶部,就不会产生新的实例
如果不位于栈顶,就会产生一个新的实例
singleTask
只有一个实例,默认在当前Task中
singleInstance
只有一个实例,创建时会新建一个展位,且此栈中不能有其他对象
——————————————————————————————————————————————
打电话发短信 代码
MainActivity:
private EditText et_main_num;
private EditText et_main_sms;private Button btn_main_call;
private Button btn_main_send;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件对象 页面比较多的按钮设置监听
et_main_num=(EditText) findViewById(R.id.et_main_num);
et_main_sms=(EditText) findViewById(R.id.et_main_sms);
btn_main_call=(Button) findViewById(R.id.btn_main_call);
btn_main_send=(Button) findViewById(R.id.btn_main_send);
//给按钮设置点击监听
btn_main_call.setOnClickListener(onClickListener);
btn_main_send.setOnClickListener(onClickListener);
//设置长按点击监听
btn_main_call.setOnLongClickListener(this);
btn_main_send.setOnLongClickListener(this);
}
//点击监听
private OnClickListener onClickListener=new View.OnClickListener() {
public void onClick(View v){
if (v==btn_main_call){//打电话
//1.创建Intent 隐式
String action="android.intent.action.DIAL";
Intent intent=new Intent(action);
//2.携带数据
String number=et_main_num.getText().toString().trim();
intent.setData(Uri.parse("tel:"+number));
//3.启动Activity
startActivity(intent);
}else if(v==btn_main_send){//发短信
Intent intent = new Intent(Intent.ACTION_SENDTO);//创建Intent对象
String number= btn_main_send.getText().toString().trim(); //携带数据
String sms=et_main_sms.getText().toString().trim();
intent.setData(Uri.parse("smsto:"+number));//设置数据
intent.putExtra("sms_body", sms);
startActivity(intent); //启动Activity
}
}
};
//长按点击监听
public boolean onLongClick(View v){
if (v==btn_main_call) {
Intent intent = new Intent(Intent.ACTION_CALL);
String number=et_main_num.getText().toString().trim();
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}else if(v==btn_main_send){
SmsManager smsmanager = SmsManager.getDefault();
String number= btn_main_send.getText().toString().trim();//携带数据
String sms=et_main_sms.getText().toString().trim();
//发送短信
smsmanager.sendTextMessage(number, null, sms, null, null);
}
return true;//表示此事件已经被消费 ,不会再触发点击事件
}
}
activit_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!--
LinearLayout中的 android:orientation="horizontal" 水平排列
android:orientation="vertical" 垂直排列
-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tel" />
<EditText
android:id="@+id/et_main_num"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/input_num"
>
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sms" />
<EditText
android:id="@+id/et_main_sms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/input_content"
>
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_main_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/call"
/>
<Button
android:id="@+id/btn_main_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send"
/>
</LinearLayout>
</LinearLayout>
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">App02_Call_SMS</string>
<string name="hello_world">Hello world!</string>
<string name="tel">电话号码:</string>
<string name="sms">短信内容:</string>
<string name="call">打电话</string>
<string name="send">发短信</string>
<string name="input_num">请输入号码</string>
<string name="input_content">请输入短信内容</string>
</resources>