Activity 是一个用来展示用户界面并且提供用户交互的应用程序组件
一、如何创建Activity?
1.创建一个子类继承Activity或者是activity的子类
2.重写activity中的onCreate()方法 在该方法中调用setContentView()函数加载activity的布局
3.在清单文件中注册activity
<application>
...
<activity android:name="activity的包名.类名">
...
</application>
activity跳转方式:
Intent intent=new Intent(x.this,x.class);
startActivity(intent);Intent intent=new Intent();
ComponentName cn=new ComponentName(x.this,x.class);
intent.setComponent(cn);
startActivity(intent);Intent intent=new Intent();
intent.setClass(x.this,x.class);
startActivity(intent);Intent intent=new Intent();
intent.setClassName(x.this,x.class.getName());
startActivity(intent);
二、Activity的生命周期
onCreate() 表示当activity创建时回调的函数
onStart() 表示当activity能够被用户看到时回调的函数
onResume() 表示当activity能够获取用户焦点时 能够与用户交互时回调的函数
onPause() 表示当activity失去用户焦点时回调的函数 启动了另外的activity
onStop() 表示当activity完全被遮挡时回调的函数
onRestart() 表示当activity重新被启动时回调的函数
onDestory() 表示当activity被销毁时回调的函数
Activity横竖屏生命周期
默认情况下横竖屏切换时activity会先销毁再重新创建 onPause()-onStop()-onDestory() onCreate()-onStart()-onResume()
<activity android:configChange="orientation|screenSize|keyboardHidden">
三、Activity之间的传值
一、无回传值
1.Intent :
A_activity:
Intent intent=new Intent(x.this,x.class);
intent.putExtra(String key,xxx);
startActivity();
B_activity:
Intent intent=getIntent();
String str=intent.getStringExtra(key);
2.Bundle :
A_activity:
Intent intent=new Intent(x.this,x.class);
Bundle bundle=new Bundle();
bundle.putString(String key,xxxx);
intent.putExtras(bundle);
startActivity();
B_activity:
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String str=bundle.getString(key);
3.Application
适合同一个app中多个activtiy或者是两个不存在直接跳转的activity之间的传值.
1.创建一个类继承application 将需要传递的数据作为application的属性
2.需要传递数据的activity
MyApplication app=(MyApplication)getApplication();
app.setXx();
3.需要取值的activity
MyApplication app=(MyApplication)getApplication();
app.getXx();
4.在清单文件中进行注册
<application android:name="自定义applicaiton的包名.类名">
</applcation>
二、有回传值
A_activity:
Intent intent=new Intent(x.this,x.class);
startActivityForResult(intent,请求码);
..onActivityResult(int requestCode,int resultCode,Intent data){
对回传Intent中的数据进行处理
}
B_activity:
setResult(Activity.RESULT_OK,Intent用来回传数据的意图对象);
finish();
三、static静态传值
A_activity:
类名.静态属性=需要存储的值
B_activity:
取值=类名.静态属性
public class StaticPerson {
private static String name;
private static int age;
public static String getName() {
return name;
}
public static void setName(String name) {
StaticPerson.name = name;
}
public static int getAge() {
return age;
}
public static void setAge(int age) {
StaticPerson.age = age;
}
}
/**
* 演示静态static传值
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//单击按钮传值 static
public void sendValues(View view){
//将需要传递的数据存储到静态变量中
StaticPerson.setName("凤姐");
StaticPerson.setAge(18);
startActivity(new Intent(MainActivity.this, ResultActivity.class));
}
}
public class ResultActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
tv=(TextView) findViewById(R.id.textView1);
String name=StaticPerson.getName();
int age=StaticPerson.getAge();
tv.setText("姓名:"+name+",年龄:"+age);
}
}