Android学习笔记(二)——Activity(Intent)
2011-03-14 21:22 shy.ang 阅读(1210) 评论(0) 编辑 收藏 举报创建视图组件过程:
新建Activity,并把它关联到对应的xml文件:
setContentView(R.layout.xxx);
在xml文件中创建预设的视图组件android : id = ”@+id/xxx”以及相应的属性;
在Activity中创建组件并设置组件的监听器:
OnClickListener listener = new OnClickListener(){
Public void onClick(){
//如果需要转向另一个Activity则需要创建Intent
Intent intent = new Intent();
//与欲跳入的Activity相关联
intent.setClass(此Activity名.this,欲跳转Activity名.class);
//开始跳转Activity
startActivity(intent);
//创建比如按钮
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(listener);//设置监听器
在对欲跳转的Activity进行同上的过程
最后关键要将TextActivity添加到AndroidManifest.xml文件中,将代码<activity android:name = "TextActivity"></activity>添加到<application>域中。
TextView一般使用在需要显示一些信息的时候,不能输入,只能初始设定或者在程序中修改,如果需要在程序中动态修改这个值,就需要使用其Android:id的值如下:
TextView text_view = (TextView)findViewById(R.id.text_view);
CharSequence text_view_old = text_view.getText();
text_view.setText ("xxx");
在导入包的时候,要注意不同域下的同名Package不能混淆
比如:import com.eoeAndroid.menu.R;
和import android.R是不同的两个名为R的包,第一个是自己这个工程里带有的R.java文件,第二个是SDK里自带的。
前缀是on的方法一般是回调方法,只有对应事件被触发后才会被android系统自动调用执行。
Intent和Activity
启动Intent打开另一个Activity可以有两种方法,第一种是startActivityForResult(),当新的Activity运行结束的时候,还需要执行原Activity里的回调函数onActivityResult()。第二种是startActivity(),这种不会执行回调函数,不用返回值,属于Activity的切换。
startActivityForResult(intent,REQUEST_CODE)第一个参数是即将要启动的Activity,第二个参数是整型的请求码。如果请求码大于0,当新Activity结束时,这个请求码会被返回到onActivityResult()的参数中。通过不同的请求码使得在Activity的回调函数onActivityResult()中针对不同的Activity的返回值进行不同的代码操作。
Activity还可以传递数据,最常见的是传递一些名值对,在新的Activity中可以很方便的获得,也可以传递其他类型的数据。Intent.putExtra(“”,””);方法是将一组名值对添加到Intent的mExtras变量中。它是Bundle类型。Bundle是一个类型安全的容器,他的实现其实就是对HashMap做一个封装。对于HashMap来讲,任何名值对都可以存进去,值可以是任何的java对象。但是对于Bundle不是这样,同样存的是名值对,但这个值只能是基本类型,或者是基本类型的数组,如String,int,byte,boolean,char等。
跳转到新的Activity后,可以在这新的Activity中获取传递过来的值:
Bundle extras = getIntent().getExtras();
If(extras != null)
data = extras.getString(“xxx”);
//xxx是前Activity函数putExtra()的一个参数””
当当前Activity结束时,会返回到前Activity中,这时可以返回相应的数据,利用对protected void onActivityResult(int requestCode,int resultCode,Intent dataintent)方法的重写,来返回想要的数据。
requestCode : 就是原Intent中的requestCode
resultCode :这个值暗示在新的Activity中的操作是否合法正确,如果正确就返回0,否则可以构造一些值来确定程序出了什么问题。
Intent : 返回的这个Intent
startActivityResult()和onActivityResult()被认为是一组异步远程调用,这种形式出现在Activity中的调用和Service的共享中。