Android-SDK Samples (Activity,中间加餐)

     主要内容,一个Activity调用另一个Activity,并向另一个Activity传递消息。如果您对这块已经驾轻就熟,就请不要浪费您宝贵的时间看我闲扯了。如果您不太熟悉,希望您自己先试着通过查资料等方法写一下,然后再看。

     昨天我们学习了一个Animation的示例,今天我想写一个简单一些的,并且把昨天的进行重构,组合到一起。如果你昨天没有读我的文章,那也没有关系,今天的是一个“中间加餐”,也就是说和之前没有联系。

     今天的主题是Activity和Activity中值的传递。

     首先我们需要了解Android下Activity的定义,我引用一下AndroidSDK中的说明:An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(View). While activities are often presented to the user as full-screen windows, they can also be used in other ways: as floating windows (via a theme with windowIsFloating set) or embedded inside of another activity (using ActivityGroup). 看不太懂,哈哈!

也就是说,就大概相当于Windows中的一个窗口(不太准确的定义,不过可以这么理解),每个具有用户界面的程序都至少需要一个Activity来同用户进行交互,OK,让我们来写一个例子,让其中的一个Acitivity打开另外一个Activity(其实昨天的例子中我们已经写了,不过一会儿用得着,为了清楚,我们写一个最朴素的程序)。

重申一次,我曾经读过于渊老师写的《自己动手写操作系统》,我认为没有比自己动手更好的学习方法了,所以请朋友们一定要和我一起做,不过,大多数我只是会告诉您去干什么,而不是怎么做,因为没有创造性的实验是没意思的,不过我会每次都把我的代码传上来,请大家作对照。

首先,我先说明一下源码结构:

    IntentTest.java...........................第一个Activity的代码文件(用于调用第二个Activity)

    main.xml...................................第一个Activity的layout文件

    Test2.java...................................第二个Activity的代码文件

    test_2.xml..................................第二个Activity的layout文件

    然后我说一下程序的目的,开始,我们写一个最简单的, 由IntentTest中的一个按钮载入Test2,这样第一个就完成了。然后我们需要把IntentTest中的一个EditText中的文字传递到Test2中,并且在Test2中的TextView上显示。

    我们先写第一个,两个Activity,通过其中的一个按钮调用另一个。

    OK,我把主要的代码贴到下边

   1: public class IntentTest extends Activity 
   2: {
   3:     /** Called when the activity is first created. */
   4:     @Override
   5:     public void onCreate(Bundle savedInstanceState) 
   6:     {
   7:         super.onCreate(savedInstanceState);
   8:         setContentView(R.layout.main);
   9:         Button button = (Button)findViewById(R.id.button_next);
  10:         button.setOnClickListener(this.nextListener);
  11:     }
  12:     OnClickListener nextListener = new OnClickListener()
  13:     {
  14:         public void onClick(View arg0) 
  15:         {
  16:             // TODO Auto-generated method stub
  17:             Intent intent = new Intent();
  18:             intent.setClass(IntentTest.this, Test2.class);
  19:             startActivity(intent);
  20:         }
  21:     };
  22: }
其中,大概的意思就是新建了一个Button的引用,然后设置了相应的Listener,在这里需要提到的是AndroidManifest.xml的修改,并不是直接写上这个就可以成功地跳转到下一个Activity了,而必须在跳转之前“告诉”Android框架,我们程序中有Test2这个Activity,否则就非法了。就好像是Android程序员是个听话的好孩子,用到什么了,必须先通过AndroidManifest.xml告诉Android框架,然后等Android框架批准以后(当然,如果是合法的就都会批准了)再使用。咱们的Test2就是一个例子。

    OK,我们继续向下看,下边就是Activity之间传递信息了。

第一个方法就是在intent上直接添加信息,这种方法比较适合信息少的情况。

  

   1: // 我们在这儿传递一个name为"lili.intenttest.demo.Name"的"LiLi"字符串
   2: intent.putExtra("lili.intenttest.demo.Name", "LiLi");
   3:  
     然后在对应的第二个Activity上用

    

   1: Intent intent = getIntent();
   2: String name = intent.getExtra("lili.intenttest.demo.Name");
   3:  
     这样就可以传递了。

    第二个方法是用Bundle对象

    

   1: // IntentTest.java
   2: Bundle bundle = new Bundle();
   3: bundle.putString("lili.intenttest.demo.Name", "LiLi");
   4: intent.putExtras(bundle);
   5: //Test2.java
   6: Bundle bundle = intent.getExtras();
   7: String name = bundle.getString("lili.intenttest.demo.Name");
先到这里,请大家务必用自己的代码实现。

    关于以后的文章,我想尽量告诉大家“去做什么”而不是“怎么去做”,当然,有些地方还是会做些示范的,而且我会给出我的源码。给学习计划,而不是填鸭式教学。再说明一点,我是个菜鸟,有什么不对的地方还请指出。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值