1.在活动中使用Toast
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public class HelloWorldActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.hello_world_layout); 7 Button button=(Button)findViewById(R.id.button); 8 button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器 9 @Override 10 public void onClick(View v) { 11 Toast.makeText(HelloWorldActivity.this,"you are button",Toast.LENGTH_SHORT).show(); 12 13 } 14 }); 15 } 16 }
2.菜单Menu
3.Intent
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public class FirstActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.hello_world_layout); 7 Button button=(Button)findViewById(R.id.button); 8 button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器 9 @Override 10 public void onClick(View v) { 11 Intent intent=new Intent(FirstActivity.this,SecondActivity.class);//FirstActivity.this做上下文,传入SecondActivity.class作为活动目标 12 startActivity(intent);//打开活动 13 14 } 15 }); 16 } 17 }
使用这种方式启动活动,意图明显,称显式Intent
隐式Intent:
1 <activity android:name=".SecondActivity"> 2 <intent-filter> 3 <action android:name="com.example.cxx.helloworld.ACTION_START"/> //指明了当前活动可以响应com.example.cxx.helloworld.ACTION_START这个action 4 <category android:name="android.intent.category.DEFAULT"/> //附加信息,更精确地指明了当前的活动能够响应的Inten中还可能带有category 5 </intent-filter> 6 7 </activity>
只有<action>和<category>同时匹配才能影响Intent
更多隐式用法......
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public class FirstActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.hello_world_layout); 7 Button button=(Button)findViewById(R.id.button); 8 button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器 9 @Override 10 public void onClick(View v) { 11 String data = "you are air"; 12 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 13 intent.putExtra("mima", data); //此方法第一个参数是键,第二个是要传的数据 14 startActivity(intent); 15 16 } 17 }); 18 } 19 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public class SecondActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.second_layout); 7 Intent intent=getIntent();//通过getIntent()方法获取用于启动SecondActivity的Intent 8 String data=intent.getStringExtra("mima");//传递的是字符串所以用getStringExtra方法来获取传递的数据 9 Log.d("SecondActivity", data); 10 11 12 } 13 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public class FirstActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.hello_world_layout); 7 Button button=(Button)findViewById(R.id.button); 8 button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器 9 @Override 10 public void onClick(View v) { 11 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 12 startActivityForResult(intent, 1); //在活动销毁时能返回一个结果给活动 13 14 } 15 }); 16 } 17 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 public class SecondActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.second_layout); 7 Button button2 = (Button) findViewById(R.id.button2); 8 button2.setOnClickListener(new View.OnClickListener() { 9 @Override 10 public void onClick(View v) { 11 Intent intent = new Intent(); //创建了个Intent,仅仅是用于传递数据而已。紧接着把要传递的数据放在Intent中 12 intent.putExtra("mima", "woshi a"); 13 setResult(RESULT_OK, intent); //专用于向上一个活动返回数据,第一个参数用于向上一个活动返回处理结果一般只使用RESUKT_OK和RESUKT_CANCEKED,第二个把带数据的Intent传递回去 14 finish(); 15 } 16 }); 17 18 } 19 }
由于是用 startActivityForResult方法来启动SecondActivity的,在SecondActivity被销毁后会回调上一个活动的onActivityResult方法,如下所示:
1 protected void onActivityResult(int requestCode,int resultCode,Intent data){ 2 switch (requestCode){ 3 case 1: 4 if (resultCode==RESULT_OK){ 5 String returnedData=data.getStringExtra("mima"); 6 Log.d("FirstActivity", returnedData); 7 } 8 break; 9 default: 10 } 11 } 12 }
onActivityResult带3个参数,第一个即启动活动时传入的请求码,第二个返回数据时传入的处理结果,第三个携带着回返数据的Intent
按下Back键回到FirstActivity也要数据返回,可以在SecondActivity中重写onBackPressed()方法,代码如下
1 public void onBackPressed(){ 2 Intent intent = new Intent(); 3 intent.putExtra("data_return","dddddddddddddddddddddddddddddddddddddd"); 4 setResult(RESULT_OK, intent);finish(); 5 }
4.活动状态:运行状态,暂停状态(不处于栈顶,但仍可见),停止状态(保存相应的状态和成员变量),销毁状态
活动的生产周期
onCreater() 他会在活动第一次被创建时调用,完成活动初始化操作,加载布局、绑定事件等
onStart()不可见变为可见时调用
onResume()活动位于反回栈栈顶
onPause()系统准备去启动或恢复另一个活动时调用
onStop()活动完全不可见调用
onDestroy()活动销毁前调用,之后状态变为销毁状态
onRestart()停止状态变为运行状态前调用
5.活动被回收了怎么办
6活动的启动模式
standard 每次启动都会创建该活动的一个新的实例
singleTop 启动活动时,如果发现返回栈的栈顶已经是该活动,会直接使用而不会再创建新的实例,不过活动为处于栈顶位置时,还是会创建新的实例
singleTask 让活动上下文只存在一个实例
singleInstance启用一个新的返回栈,实现共享活动实例