?
活动的基本操作
设置为主活动
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
使用toast(点击某个按钮后出现toast弹窗)
Button botton1=(Button) findViewById(R.id.button_1);
button1=setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v){
Toast.makeText(activity_name.this,"you have clicked button 1",Toast.LENGTH_SHORT).show();
}
});
使用menu
在res文件夹中新建menu文件夹,在menu文件夹中添加menu resource file
在对应的活动中重写onCreateOptionsMenu()方法
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
定义菜单响应事件,在活动中重写onOptionsItemSelected()方法
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.add_item:
Toast.makeText(this,"you have clicked add function",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this,"you have clicked remove_function",Toast.LENGTH_LONG).show();
break;
default;
}
return true;
}
销毁活动
多个活动:使用intent在活动之间穿梭,可以实现多个程序之间的功能共享
启动一个活动:intent:安卓程序中各组件之间进行交互的一种重要方式,一般可被用于启动活动、启动服务以及发送广播等场景
显式intent:直接在intent构造函数的参数中指定启动的活动
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
隐式intent:指定action和category等信息,由系统自己去分析intent,找出合适的活动
在manifest.xml文件中,对应activity标签下配置<intent_filter>的内容
<activity android:name="SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>;
<category android:name="android.intent.category.DEFAULT"/>;
<category android:name="com.example.activitytest.ACTION_START"/>;
<intent-filter/>
</activity>
在FirstActivity.java文件中修改对应按钮的点击事件
botton1.setOnClickListener(){
@override
public void onClick(View v){
Intent intent=new Intent("com.example.activity_test.ACTION_START");
Intent.addCategory("com.example.activity_test.MY_CATEGORY");
startActivity(intent);
}
});
使用intent向下一个活动传递数据:intent提供了一系列putExtra()方法的重载,可以将需要传递的数据暂存在intent中,启动另一个活动后,只需要把这些数据再从intent中取出即可。
例如:将first_activity中的数据传到second_activity中
//first_activity:用显式intent来启动second_activity
button1.setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v){
String data="pass to second activity";
Intent intent=new Intent(first_activity.this,sencond_activity.class);
Intent.putExtra("extra data",data);
startActivity(intent);
}
};
//second_activity
public class second_activity extends AppCompatActivity {
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
setContentView(R.layout.second_layout);
Intent intent=getIntent();
String data=intent.getStringExtra("extra data");
}
}
返回数据给上一个活动:startActivityForResult()方法:第一个参数是intent,第二个参数是请求码,用于在之后的回调中判断数据的来源(只要是一个唯一的值就可以了)。
//first_activity:用显式intent来启动second_activity
button1.setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v){
Intent intent=new Intent(first_activity.this,sencond_activity.class);
startActivityForResult(intent,1);
}
};
//second_activity
public class second_activity extends AppCompatActivity {
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
setContentView(R.layout.second_layout);
Button button2=(Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v){
Intent intent=new Intent();
Intent.putExtra("data_return","pass return to first activity");
setResult(RESULT OK,intent);
finish();
}
});
}
}
活动的生命周期
四大状态:运行状态(位于返回栈的顶部),暂停状态(不位于栈顶,但是还是完全存活的),停止状态(不再出于栈顶,而且完全不可见,可能可能会被系统回收),销毁状态
activity类中定义的7个回调方法
活动的三种生存期
解决活动被回收时临时数据保存的问题:onSaveInstanceState()方法中携带了一个Bundle类型的参数,Bundle类型的参数提供了一系列用于保存数据的方法,如用putString保存字符串,用putInt保存整型数据
//被回收的活动中加入以下代码:
@override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
String tempData="something you just typed";
outState.putString("data_key",tempData);
}
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"onCreate");
setContentView(R.layout.activity_main);
if(savedInstanceState!=null) {
String tempData=savedInstanceState.getString("data_key");
Log.d(TAG,tempData);
}
}
活动的启动模式:在AndroidManifest.xml中,通过给<activity>标签指定android:launchMode属性来选择启动模式