博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记入门01 : Activity
阅读量:2218 次
发布时间:2019-05-08

本文共 5187 字,大约阅读时间需要 17 分钟。

  Activity学习笔记 

1 概念

Activity其实就是窗口(Window)

文档地址:   

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

 

 

你可能感兴趣的文章
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java集合详解8:Java集合类细节精讲,细节决定成败
查看>>
Java并发指南1:并发基础与Java多线程
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>
Java网络编程和NIO详解6:Linux epoll实现原理详解
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>