代码改变世界

Android学习笔记(二)——Activity(Intent)

2011-03-14 21:22  shy.ang  阅读(1201)  评论(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系统自动调用执行。

 

IntentActivity

启动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的共享中。