主要内容,一个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: }
OK,我们继续向下看,下边就是Activity之间传递信息了。
第一个方法就是在intent上直接添加信息,这种方法比较适合信息少的情况。
1: // 我们在这儿传递一个name为"lili.intenttest.demo.Name"的"LiLi"字符串
2: intent.putExtra("lili.intenttest.demo.Name", "LiLi");
3:
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");
关于以后的文章,我想尽量告诉大家“去做什么”而不是“怎么去做”,当然,有些地方还是会做些示范的,而且我会给出我的源码。给学习计划,而不是填鸭式教学。再说明一点,我是个菜鸟,有什么不对的地方还请指出。谢谢!