首页 > 代码库 > Android基础学习之Activity之间的切换

Android基础学习之Activity之间的切换

  首先我还是要先介绍Intent这个家伙,没错,就是这个家伙让我们实现了Activity之间的跳转切换来着的。 接下来的介绍引用了 enjoy风铃所写的《Intent的那些事》的部分内容:

 Intent在Android大家庭中是一个活泼的小男孩,从小就是交际草。在代码中,Activity、Service、BroadcastReceiver这三个重要的大妈级重量组件,之间的调用关联都是依靠Intent去交流的,例如Activity的startActivity(),Service的startService()、bindService(),BroadcastReceiver的sendBroadcast()、sendOrderBroadcast()等,其中都是需要携带一个Intent(或IntentFilter)的参数。

  当然Intent中要指定要启动组件的信息,或明显活隐晦。明显的就是显式启动:举个例子来说就是Intent你去把这东西交给某某(名字)Activity大妈。隐晦的是隐式启动:当然得不免俗得给例子就是Intent你把这个东东交给昨晚和我一起在菜市场跳广场舞的那个胖大妈,其中广场舞和胖就把某大妈给赤果果的定位了。这就是Intent的两种匹配方式,我都觉得我自己说的怪抽象的了。

  接下来就是介绍IntentFilter的好时机了,它就是大妈的儿子(组件的拦截器)。当如果Intent隐式启动时,Intent会找他的一群小伙伴IntentFilter来,然后问他们说,你们谁的妈昨晚去菜市场跳广场舞了?你们谁的妈又好胖好胖的?然后IntentFilter各想各妈,哎呀,其中一个IntentFilter拍拍脑袋说,这不就是我妈吗!然后他就屁颠屁颠的领着Intent去找某Activity妈把东东交给她了。

  为了避免大家看不懂上面的例子,我还是发扬一下2B青年的社会责任感,用比较教条的语言来介绍一下Intent和IntentFilter:Intent是一个意图对象,组件可以通过设定Intent来启动另外一个组件,有显式启动和隐式启动两种方法,显式启动直接指定要启动的组件的名字,隐式启动则指定action、category、data等来启动符合条件的组件;其中的IntnetFilter就是一个意图过滤器,它会设定一些过滤规则如action、category、data等,如果Intent中的action、category、data与过滤器中相匹配,则为启动该过滤器的组件。

接下来就为大家展示一个简单的跳转流程及代码:

首先是创建一个Android项目,项目名自定义,我用Intent_App作为项目的名称。

接下来在首个Activity的XML页面中添加一个Button按钮,id默认是button1;

在XML页面所对应的MainActivity.java文件中添加2个方法:(稍后贴上代码)

findViewById():用来创建一个按钮对象。

setListener():用来创建事件监听器。

创建app_intent.xml页面,用来进行跳转。新建App_intentActivity.java文件,在文件内添加onCreate()事件。

以上就是一个简单的页面跳转流程,小弟不才,写得很不公整,外加所表达知识点很基础,还望给为看官海涵。代码如下:

 1 package com.example.intent_app; 2  3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.view.Menu; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.Button; 9 import android.content.Intent;10 public class MainActivity extends Activity {11 12     private Button myLogin; 13     @Override14     protected void onCreate(Bundle savedInstanceState) {15         super.onCreate(savedInstanceState);16         setContentView(R.layout.activity_main);17         findViewById();18         setListener();19     }20     21     @Override22     public boolean onCreateOptionsMenu(Menu menu) {23         // Inflate the menu; this adds items to the action bar if it is present.24         getMenuInflater().inflate(R.menu.main, menu);25         return true;26     }27     public void findViewById()28     {29     myLogin =(Button)findViewById(R.id.button1);    30     }31     32     public void setListener()33     {34         myLogin.setOnClickListener(new OnClickListener(){35             public void onClick(View v){36                 startActivity(new Intent(MainActivity.this,App_intentActivity.class));37                 finish();38             }39         });40     }41 }
 1 package com.example.intent_app; 2  3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.view.Menu; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.Button; 9 import android.content.Intent;10 11 public class App_intentActivity extends Activity {12     protected void onCreate(Bundle savedInstanceState) {13         super.onCreate(savedInstanceState);14         setContentView(R.layout.app_intent);15     }16 }

基本没啥技术含量,作为新手的我还是把它给写下来了(因为怕忘了)......

PS:每创建一个Activity时记得注册,我就是忘了注册这一茬,调了我一两个小时(楼主英语水平不过2级,勿鄙视~~~~)

AndroidManifest.xml中添加:

1   <activity2      android:name="要注册的Activity的名字,比如com.example.intent_app.App_intentActivity"3      android:screenOrientation="portrait" >4   </activity>

 

 

 

Android基础学习之Activity之间的切换