Android之Activity应用小例子

该程序包含三个Activity,下面一一展示

 

第一个Activity:

运行效果:

页面布局代码:



    

    

    


 

Java代码:

package com.example.helloactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
 * 首页面Activity
 * 该Activity布局页面上有三个控件
 * 一个是姓名标签
 * 一个是姓名输入文本框
 * 一个是用于启动第二个Activity的按钮
 * 该Activity将会把输入的姓名传递给第二个Activity
 */
public class MainActivity extends Activity {

	//页面按钮(启动第二个Activity)
	private Button btnStart2;
	//页面文本框(姓名)
	private EditText txtName;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//初始化页面组件
		btnStart2 = (Button) findViewById(R.id.btnStart2);
		txtName = (EditText) findViewById(R.id.txtName);
		//添加按钮事件
		//当点击该按钮的时候将会启动第二个Activity,并将输入的姓名作为参数传递过去
		btnStart2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View view) {
				//创建Intent,用于启动第二个Activity
				Intent intent = new Intent(MainActivity.this, 
						SecondActivity.class);
				//声明bundle对象,用于传递参数所用
				Bundle bundle = new Bundle();
				//将姓名文本框中输入的内同放入bundle中
				bundle.putString("name", txtName.getText().toString());
				//将bundle放入intent中
				intent.putExtras(bundle);
				//Intent提供了多了重构的putExtra()方法
				//用于直接存放不同类型的参数
				//用intent直接存放参数时,
				//如果Intent中没有Bundle,Intent会新建一个Bundle
				//如果Intent中已有Bundle,参数会存到已有的Bundle中
				intent.putExtra("intentTest", "Intent直接存放参数");
				startActivity(intent);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


 

第二个Activity:

运行效果:

页面布局代码:



    


 

Java代码:

package com.example.helloactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * 该Activity页面上的姓名文本框用于显示主页面Activity中填写的姓名
 * 单击“启动第三个Activity”按钮后,会以startActivityForResult方式启动ThreeActivity
 * 在第三个Activity中填写了密码之后点击返回第二个Activity按钮
 * 在ThreeActivity从返回到SecondActivity时onActivityResult方法将会被回调
 * SecondActivity的密码输入框将会显示ThreeActivity中输入的密码
 */
public class SecondActivity extends Activity {

	//页面按钮(启动第三个Activity)
	private Button btnStart3;
	//姓名文本框(用于显示第一个Activity传过来的姓名参数)
	private EditText txtName;
	//页面按钮(用于显示第三个Activity返回的密码)
	private EditText txtPwd;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		
		txtName = (EditText) findViewById(R.id.txtName2);
		txtPwd = (EditText) findViewById(R.id.txtPwd2);
		btnStart3 = (Button) findViewById(R.id.btnStart3);
		
		Intent intent = getIntent();
		//取出intent中携带的数据包Bundle
		Bundle bundle  = intent.getExtras();
		Toast.makeText(this,"使用Intent直接存放的参数"+
		bundle.getString("intentTest") , Toast.LENGTH_SHORT).show();
		//也可直接用Intent取出数据包Bundle中存放的数据
		String nameStr = intent.getStringExtra("name");
		txtName.setText(nameStr);
		
		//添加按钮事件,用于启动第三个Activity
		btnStart3.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				//创建Intent,用于启动第三个Activity
				Intent intent = new Intent(SecondActivity.this, 
						ThreeActivity.class);
				//以startActivityForResult方式启动Activity
				startActivityForResult(intent, 0);
			}
		});
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.second, menu);
		return true;
	}

	/**
	 * 开发者不知何时被启动的ThreeActivity会返回结果
	 * 为了让当前的Activity获取ThreeActivity返回的结果需要重写onActivityResult方法
	 * 当时被启动的ThreeActivity返回结果时,onActivityResult将会被回调
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		//resultCode请求码  resultCode结果码
		//当两者都为0时,处理结果
		if(resultCode==0 && resultCode==0){
			//取出Intent中的数据
			Bundle bunle = data.getExtras();
			//取出Bundle中的数据
			String pwdStr = bunle.getString("pwd");
			//修改密码文本框的内容
			txtPwd.setText(pwdStr);
		}
	}
}


 

第三个Activity:

运行效果:

页面布局代码:



    

    


 

Java代码:

package com.example.helloactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
 * 该Activity用于输入密码,然后返回上一个Activity
 */
public class ThreeActivity extends Activity {

	//密码输入文本框
	private EditText txtPwd; 
	//页面按钮(返回第二个Activity)
	private Button btnReturn; 
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_three);
		txtPwd = (EditText) findViewById(R.id.txtPwd);
		btnReturn = (Button) findViewById(R.id.btnReturn);
		
		btnReturn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//获取启动该Activity之前的Activity对应的Intent
				Intent intent = getIntent();
				intent.putExtra("pwd", txtPwd.getText().toString());
				//设置该ThreeActivity的结果码,并设置结束之后退回的Activity
				ThreeActivity.this.setResult(0, intent);
				//结束ThreeActivity
				ThreeActivity.this.finish();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.three, menu);
		return true;
	}

}


 

另外Activity需要在AndroidManifest.xml文件中配置




    

    
        
            
                

                
            
        
        
        
        
        
    



 源码下载:http://download.csdn.net/detail/u012081562/6970173

你可能感兴趣的:(Android之Activity应用小例子)