android的四大组件之一Activity,即为界面。今天的内容是Activity的配置和Activity的生命周期。
1:Activity的配置:
<activity android:name="com.example.activity.MainActivity"//指定activity的类名 android:label="@string/app_name">//该界面的标签 <intent-filter>//过滤器 <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
2Activity的生面周期:
Demo1
package com.example.activity; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; /** * activity之生命周期 * @author * */ public class MainActivity extends Activity { private static String TAG="MainActivity"; Button btn2; EditText et; private static String CONTENT="content"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act); Log.i(TAG,"MainActivity--->>>onCreate"); /** * 把保留下来的数据拿来初始化 */ if(savedInstanceState!=null&&savedInstanceState.containsKey(CONTENT)) { et.setText(savedInstanceState.getString(CONTENT)); } et=(EditText) findViewById(R.id.et); btn2=(Button) findViewById(R.id.button2); btn2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); startActivity(intent); } }); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG,"MainActivity--->>>onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG,"MainActivity--->>>onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG,"MainActivity--->>>onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG,"MainActivity--->>>onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG,"MainActivity--->>>onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG,"MainActivity--->>>onStop"); } @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); Log.i(TAG,"MainActivity--->>>onSaveInstanceState"); String str=et.getText().toString(); outState.putString(CONTENT, str); } }
<span style="font-size:32px;color:#ff0000;"><strong>SecondActivity.class</strong></span>
<span style="font-size:32px;color:#ff0000;"><strong></strong></span><pre name="code" class="java">package com.example.activity; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SecondActivity extends Activity { private static String TAG="MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); Log.i(TAG,"SecondActivity--->>>onCreate"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG,"SecondActivity--->>>onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG,"SecondActivity--->>>onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG,"SecondActivity--->>>onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG,"SecondActivity--->>>onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG,"SecondActivity--->>>onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG,"SecondActivity--->>>onStop"); } }
3:启动activity
1:startActivity(intent);
2: startActivityForResult(intent,int RequestCode);//请求码;
3.1:关闭Activity
1:finish();
2: finish(int RequestCode);
下面我们通过两个例子讲解内容:
Demo2:当几个界面之间数据相互交互的时候
package com.example.intent; /** * * * * intent的应用 打开第二个界面 几个界面之间传递参数; */ import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { Button btn; protected static int REQUEST_CODE=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.intent); btn=(Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub /** * 通过intent启动下一个intent */ Intent intent=new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); //如果要传递一些数据 intent.putExtra("str", "the second"); //当需要第二个activity返回一些数据时候 startActivityForResult(intent,REQUEST_CODE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(requestCode==REQUEST_CODE) { if(resultCode==SecondActivity.RESULT_CODE)// { Bundle bundle=data.getExtras(); String str=bundle.getString("back"); String str1=bundle.getString("str"); Toast.makeText(MainActivity.this, str, 0).show(); Toast.makeText(MainActivity.this, str1, 0).show(); } } } }
package com.example.intent; /** * * */ import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class SecondActivity extends Activity { Button btn; Intent intent; protected static int RESULT_CODE=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); //得到Intent intent=getIntent(); //得到上面的Intent 接收数据 Bundle bundle=intent.getExtras(); //得到对于键值的数据 String str=bundle.getString("str"); btn=(Button) findViewById(R.id.button2); Toast.makeText(SecondActivity.this, str, 0).show(); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub intent.putExtra("back","back data"); //当关闭时候 返回数据 setResult(RESULT_CODE,intent); //关闭第二个界面 finish(); } }); } }