`
Irving_wei
  • 浏览: 130365 次
  • 性别: Icon_minigender_1
  • 来自: Heaven
社区版块
存档分类
最新评论

Android笔记(七):Android中Activity的切换②

阅读更多
上一节,我们通过对Activity的UI属性设置,完成了一个类似Activity切换的程序,可是大家都知道,明明只有一个Activity的子类存在于程序当中,谈何切换呢?
本节将从实质上去完成这个功能。

进入本文之前,我们先来看看一个类;android.content.Intent

Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION请求给Android,Android会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器Activity来浏览网页。

简单说来,Intent允许在一个Activity中调用另外一个Activity,并且允许在不同的Activity之间传递参数。

这一节,我们只介绍怎样在Activity内调用另外一个Activity,并不传递参数。

先来看效果图:



因为本程序涉及的类和文件比较多,为了简便,就不在strings.xml中设置程序用到的字符串了,直接在文件和类里面使用。

先在程序自己生成的main.xml中设置第一个Activity的布局配置,包括一个TextView和一个Button,代码如下所示:

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="欢迎来到IrvingSun的安卓程序"
    />
    
 <Button 
  	android:id="@+id/button1"
  	android:layout_width="wrap_content"
  	android:layout_height="wrap_content"
  	android:text="点击进入下一页"
 />   


而后,我们再在此目录下,重新生成一个mylayout.xml,同样是配置一个TextView和一个Button,这个xml的配置是为了第二个Activity而准备的,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="对不起程序出错了,请点击“上一步”返回操作"
    />
    
 <Button 
  	android:id="@+id/button2"
  	android:layout_width="wrap_content"
  	android:layout_height="wrap_content"
  	android:text="上一页"
 />   
</LinearLayout>


接下来就是分别把这两个xml分别关联到两个Activity的子类中去,并且为两个Button关联上点击事件,在事件的实现中,添加上Intent类的功能,就大功告成啦。
其中,Activity1的代码如下,

public class AndroidWithIntent_Activity1 extends Activity {
	private Button button1 ; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //关联UI配置
        setContentView(R.layout.main);
        
        button1 = (Button)findViewById(R.id.button1);
        
        button1.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
			 //new 一个Intent对象,并指定要启动的class
				Intent intent = new Intent();
				intent.setClass(AndroidWithIntent_Activity1.this, AndroidWithIntent_Activity2.class);
				startActivity(intent);
				AndroidWithIntent_Activity1.this.finish();
			}
		});
        
    }
}


其中
intent.setClass(AndroidWithIntent_Activity1.this, AndroidWithIntent_Activity2.class);
startActivity(intent);


这句说明,Intent是要从Activity1跳转到Activity2,
startActivity(intent);说明从intent中获取信息,跳转。
而后面的
AndroidWithIntent_Activity1.this.finish();
是指将这个Activity1给关闭了。

同样的道理,Activity2的代码也应该是这样的套路,代码如下,就不具体再分析了;
public class AndroidWithIntent_Activity2 extends Activity {
	private Button button2 ; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayout);
        
        button2 = (Button)findViewById(R.id.button2);
        
        button2.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
			 //new 一个Intent对象,并指定要启动的class
				Intent intent = new Intent();
				intent.setClass(AndroidWithIntent_Activity2.this, AndroidWithIntent_Activity1.class);
				startActivity(intent);
				AndroidWithIntent_Activity2.this.finish();
			}
		});
        
    }
}



最后,我们需要将我们自己新建的Activity配置进入AndroidManifest.xml,
在该文件中,存在application标签,里面存放的是Activity标签,可以看到,我们生成好的Activity1已经配置好在里面了,在该Activity的同级位置,添加如下代码:
<activity android:name="AndroidWithIntent_Activity2"></activity>


这样我们的系统就可以识别我们新建的Activity类了。

在下一节我们将介绍如何在Activity之间切换的同时,传递点数据过去,就像是在html页面间传递数据一样。
  • 大小: 18.4 KB
  • 大小: 17.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics