Android学习笔记入门01 : Activity

  Activity学习笔记 

1 概念

Activity其实就是窗口(Window)

文档地址:   http://developer.android.com/reference/android/app/Activity.html


2 生命周期 

生命周期图: 出自Android.app.Activity 


 

 

 运行(Running)就是窗口在前端,暂停( Pause)就是窗口部分被遮盖失去了焦点,停止( Stop)就是窗口完全看不见了.销毁(Destory)就是窗口被从内存中清除了.


启动时执行 onCreate  onStart onResume 三个方法

被部分遮蔽时 执行 onPause 方法 重新回到前台 onResume方法 

完全看不到(如按HOME) 时,执行onPause onStop方法, 回到前台执行onStart onResume方法

被销毁时(如按返回键)  执行 onPause onStop onDestory .  


3 操作Activity 

AndroidManifest.xml中的Application下  android:theme可以操作主题

android:theme="@android:style/Theme.NoTitleBar" 表示一个没有标题栏 


 
android:theme="@android:style/Theme.Translucent.NoTitleBar" 表示一个透明无标题的应用





4 启动Activity

首先每个要启动的Activity都必须写进AndroidManifest文件中,

在Appication结点下建一个 <activity android:name="Act01"></activity> 写上类名就行了

其次启动使用Context方法中的startActivity(Intent i)方法,由于 Activity就是一个Context所以可以直接用,不必写对象. 

还需要一个描述要启动的应用的Intent.

代码如下: 

Intent intent = new Intent(MainActivity.this, Act01.class);
startActivity(intent);

Intent构造函数的第一个参数是一个Context,第二个是要启动的Activity类.

由于这两行是在点击按钮动作中写的,所在的是一个点击按钮动作的匿名类,所以不能直接用this. 


5 关闭Activity

调用finish() 方法


6 Activity的数据传递

6.1 传递数据 

Intent intent = new Intent(MainActivity.this, Act01.class);
intent.putExtra("key", "hello aty01");

startActivity(intent);

想传递比较复杂的数据类型 可以传递 Bundle ,相当于将一系列数据打包

 
 Bundle bundle = new Bundle();
 int[] array01 = { 1, 2, 3, 4 };
 int[] array02 = { 4, 3, 2, 1 };
 bundle.putIntArray("array01", array01);
 bundle.putIntArray("array02", array02);
 intent.putExtra("bundle", bundle);

相当与传递了一个包含两个数组的结构体



6.2 取得数据

 
Intent intent = getIntent(); // 得到与这个Activity关联的Intent
 String str = intent.getStringExtra("key");
 
 Bundle data = getIntent().getBundleExtra("bundle");
 int array01[] = data.getIntArray("array01");
 int array02[] = data.getIntArray("array02");




6.3 取得第二个Activity传回的数据

1 只能使用startActivityForResult()启动第二个Activity

startActivityForResult(intent, 0); 多了一个请求码 

2 第二个Activity在finish前要设置好返回值

 Intent data = new Intent();
 data.putExtra("result", "abc");
 setResult(1, data);

finish();

3 第一个Activity中重写  onActivityResult 来获取数据

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
String str = data.getStringExtra("result");
System.out.println(resultCode + " " + str);
}


结束

=========================================

程序:

MainActivity

package cn.zyh.activity;

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

public class MainActivity extends Activity
{
	private Button btnStartAty1;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		System.out.println("onCreate");
		// 先有setContentView将Activity和布局绑定,才能findViewById
		btnStartAty1 = (Button) findViewById(R.id.btn01);
		btnStartAty1.setOnClickListener(new View.OnClickListener()
		{

			@Override
			public void onClick(View v)
			{

				Intent intent = new Intent(MainActivity.this, Act01.class);

				intent.putExtra("key", "hello aty01");

				// 添加复杂的数据 通过bundle完成
				Bundle bundle = new Bundle();
				int[] array01 = { 1, 2, 3, 4 };
				int[] array02 = { 4, 3, 2, 1 };
				bundle.putIntArray("array01", array01);
				bundle.putIntArray("array02", array02);
				intent.putExtra("bundle", bundle);

				// startActivity(intent);
				startActivityForResult(intent, 0);

			}
		});
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		super.onActivityResult(requestCode, resultCode, data);
		String str = data.getStringExtra("result");
		System.out.println(resultCode + " " + str);

	}

	@Override
	protected void onStart()
	{
		super.onStart();
		System.out.println("onStart");
	}

	@Override
	protected void onResume()
	{
		super.onResume();
		System.out.println("onResume");
	}

	@Override
	protected void onPause()
	{
		super.onPause();
		System.out.println("onPause");
	}

	@Override
	protected void onStop()
	{
		super.onStop();
		System.out.println("onStop");
	}

	@Override
	protected void onDestroy()
	{
		super.onDestroy();
		System.out.println("onDestory");
	}

	@Override
	protected void onRestart()
	{
		super.onRestart();
		System.out.println("onRestart");
	}

}


Act01

package cn.zyh.activity;

import java.util.Arrays;

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

public class Act01 extends Activity
{

	private Button btnClose;
	private TextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.act01);
		btnClose = (Button) findViewById(R.id.btn02);

		btnClose.setOnClickListener(new View.OnClickListener()
		{

			@Override
			public void onClick(View v)
			{

				Intent data = new Intent();
				data.putExtra("result", "abc");
				setResult(1, data);

				finish();
			}
		});

		tv = (TextView) findViewById(R.id.tv);
		Intent intent = getIntent(); // 得到与这个Activity关联的Intent
		String str = intent.getStringExtra("key");

		Bundle data = getIntent().getBundleExtra("bundle");
		int array01[] = data.getIntArray("array01");
		int array02[] = data.getIntArray("array02");

		str += (" " + Arrays.toString(array01) + " " + Arrays.toString(array02));
		tv.setText(str);
	}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值