一、写在前面的话
上一篇我们知道了android的常用的四个布局,还有一些常用的控件的用法,当然我这只是杯水车薪,更多的用法还是得在实际项目中去学习。今天这一篇博客也是拖了好几天才写,一是这几天工作也比较忙,二是这个Activity是四大组件之一,比较重要,细说起来也很复杂,但他又是我们在实际操作中遇到的最多的。思考之下,这一篇只是粗略的说一下,等以后有机会再深入了解Activity。
二、初探Activity——Intent
首先我们要知道什么是Activity(活动),他是一种可以包含用户界面的组件,主要用于和用户进行交互。一个程序里至少要有一个Activity(至少我们现在写的程序都是让人拿来用的)。其实我们在第一篇的时候就已经接触过Activity了,当时我们是创建了一个MainActivity继承自Activity来实现了HelloWorld。那么接下来我们来看看两个Activity是怎么运行的。
- Intent
我们先新建一个项目ActivityTest,首先我们要知道多个Activity之间是如何跳转的,这里我们用到了一个新的东西叫——Intent。让我们先来看看他是如何运用的。
public class MainActivity extends ActionBarActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
}
public class SecondActivity extends ActionBarActivity{
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondlayout);
initView();
}
private void initView() {
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
效果如下:
这里我们看到在MainActivity里,我们的button的点击方法实现了Activity的跳转。在SecondActivity 里我们用了finish()
方法来关闭活动(类似点击了返回键)。在MainActivity里我们new了一个新的Intent对象,并给他传入了两个参数,第一个要求提供一个启动活动的上下文,一般传入我们当前的activity,第二个就是我们想要启动的activity了。这样是不是很简单呢,只需要new一个新的Intent对象就好了。这种方法是我们比较常用的一种显示Intent的用法,下面我们来介绍他的另一种用法——隐式Intent。
隐式Intent的用法并不会明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的的action和category等信息,然后交给系统去分析这个Intent并帮我们找到合适的活动去启动。那系统是怎么帮我们找到的呢,那就需要我们在AndroidManifest里去设置了。
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.jiang.joey.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
然后我们在MainActivity里修改button的点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public vo