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 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 findViewById(); 18 setListener(); 19 } 20 21 @Override 22 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 <activity 2 android:name="要注册的Activity的名字,比如com.example.intent_app.App_intentActivity" 3 android:screenOrientation="portrait" > 4 </activity>