现在的位置: 首页 > 综合 > 正文

Activity之生命周期与配置

2018年05月27日 ⁄ 综合 ⁄ 共 6208字 ⁄ 字号 评论关闭

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();
			}
	    	
	    });
	}

	

}




抱歉!评论已关闭.