一个活动

新建一个android工程,默认不创建活动,新建FirstActivity.java文件

1.加载布局文件

1
2
3
4
5
6
7
8
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//加载布局文件
setContentView(R.layout.first_layout);
}

2.注册Activity

在AndroidManifest.xml文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<-<!-- 注册活动 -->
<activity
android:name=".FirstActivity"
android:label="This is first activity">
<intent-filter>
<!-- 定义为主活动 -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

3.隐藏标题栏

1
2
3
4
5
6
7
8
9
   @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//加载布局文件
setContentView(R.layout.first_layout);
}

4.在活动中使用Toast

1
2
3
4
5
Toast.makeText(this, "Clicked Add", Toast.LENGTH_SHORT).show();
//第一个参数是活动的上下文
//第二个参数是显示的文本
//第三个参数是 示的时间长短(Toast.LENGTH_SHORT or Toast.LENGTH_LONG)
Toast android.widget.Toast.makeText(Context context, CharSequence text, int duration);

5.在活动中使用Menu

  • 在res->menu下新建一个Menu Resource Type 的**.xml文件
  • 编辑**.xml文件
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/add_item"
android:title="Add" />
<item android:id="@+id/remove_item"
android:title="Remove" />

</menu>
  • 重写FirstActivity.java中onCreateOptionsMenu()方法
    1
    2
    3
    4
    5
    6
    7
    8
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub

    getMenuInflater().inflate(R.menu.**, menu);

    return true;
    }

为了使Menu中的item能够有功能,重写onOptionsItemSelected()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "Clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "Clicked Remove", Toast.LENGTH_SHORT).show();
break;

default:
break;
}
return true;
}

6.销毁一个活动

Activity类提供了一个方法,来销毁一个活动

1
2
3
4
5
6
7
//finish();
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// Toast.makeText(FirstActivity.this, "clicked", Toast.LENGTH_SHORT).show();
finish();//销毁活动
}

以上是创建一个活动涉及的知识


活动之间

1.使用显式Intent

1
2
3
4
5
6
7
8
9
10
	@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// Toast.makeText(FirstActivity.this, "clicked", Toast.LENGTH_SHORT).show();
// finish();//销毁活动
//使用显式Intent在FirstActivity活动基础上打开SecondActivity活动
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
//调用startActivity()执行intent
startActivity(intent);
}

2.使用隐式Intent

需要实现从FirstActivity到达另外一个符合要求的活动中去
SecondActivity需要符合这个要求
首先在ActivityManifest.xml文件中定义标签

1
2
3
4
5
6
7
8
<activity 
android:name=".SecondActivity" >
<intent-filter>
<!-- 定义一个标签来符合要求被FirstActivity活动启动 -->
<action android:name="***"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

然后在FirstActivity中的onClick()方法中setAction这个标签,达到启动指定要求的应用的目的
有两种方法设置这个category
1.在构造方法中setAction这个category这个标签
2.直接调用Intent对象的intent.setAction()方法设置标签

1
2
3
4
5
6
7
8
9
10
11
12
13
	@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// Toast.makeText(FirstActivity.this, "clicked", Toast.LENGTH_SHORT).show();
// finish();//销毁活动
// Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
// startActivity(intent);
//隐式Intent
Intent intent=new Intent("***");//构造方法
// Intent intent=new Intent();
// intent.setAction("com.example.activity.ACTION_START")
startActivity(intent);
}

因为startActivity启动时就是根据默认的category标签,所以

1
<category android:name="android.intent.category.DEFAULT" />

可以调用默认的category来startActivity,当然我们也可以设置

1
2
Intent intent=new Intent();
intent.setCategory("***");

3.更多隐式Intent用法

1
2
3
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
  • 指定Intent的action是Intent.ACTION_VIEW,是安卓系统内置动作,其常量为
1
android.intent.action.VIEW
  • Uri.parse("http://www.baidu.com") 将网址解析成一个Uri对象
  • 调用Intent的 setData() 方法将Uri对象传递进去