Unit2 Activities
Unit2 Activities
2.1 活动的基本用法
2.1.1 活动的创建
项目中的任何Activity都应该重写onCreate()方法,而目前FirstActivity中已经重写了这个方法,这是Android Studio自动帮我们完成的,代码如下所示:
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
2.1.2 创建和加载布局
Android程序的设计讲究逻辑和视图分离,最好每一个Activity都能对应一个布局。
右击app/src/main/res/layout→New→Directory,可以创建一个布局文件。布局文件中是使用XML来进行界面编辑的,这里创建一个first_layout.xml文件,并编写如下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"
/>
</LinearLayout>
回到FirstActivity,在onCreate()方法中加入如下代码即可给当前的Activity加载一个布局。
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout); // 添加的语句
}
2.1.3 在AndroidManifest文件中注册
所有的Activity都要在AndroidManifest.xml中进行注册才能生效。Activity的注册声明要放在
还可以通过在
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.example.myapplication">
<application
...>
<activity android:name=".FirstActivity"
android:label="This is FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2.1.4 在活动中使用 Toast
Toast是Android系统提供的一种非常好的提醒方式。
在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button_1 = (Button) findViewById(R.id.button_1);
button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "You clicked Button 1",
Toast.LENGTH_LONG).show();
}
});
}
findViewById() 方法可以获取在布局文件(app/src/main/res/layout/first_layout)中定义的元素
Button 使得 findViewById() 返回的 View 对象向下转型为 Button 对象。
通过调用 setOnlickListener() 方法为按钮设置一个监听器,点击按钮时就会执行监听器中的 onClick() 方法。同时,弹出 Toast 的功能也应该在 onClick() 方法中编写。
Toast 的编写:通过静态方法 makeText() 创建一个 Toast 对象,然后调用 show() 将 Toast 显示出来。
makeText()方法需要传入3个参数:
第一个参数是Context,也就是Toast要求的上下文(由于活动本身就是-一个 Context对象,因此这里直接传入FirstActivity.this即可)。
第二个参数是Toast显示的文本内容。
第三个参数是Toast显示的时长,有两个内置常量可以选择Toast . LENGTH_ SHORT 和Toast . LENGTH_ LONG。
2.1.5 在活动中使用 Menu
Menu提供了一种机制,可以让界面中的菜单项在默认情况下不显示。
只有当用户主动点击了菜单按钮时,才会弹出里面具体的内容,因此它不会占用任何Activity的空间。
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/> // app\src\main\res\menu\main.xml
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this, "You clicked Add.", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked Remove.", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
} // app\src\main\java\com\example\myapplication\FirstActivity.java
2.1.6 销毁一个活动
通常情况下只要按一下手机的Back键就可以销毁当前的Activity了。
不过,如果你不想通过按键的方式,而是希望在程序中通过代码来销毁Activity,当然也可以。
Activity类提供了一个finish()方法,只需要调用一下这个方法就可以销毁当前的Activity了。
finish();
2.2 使用 Intent 在活动之间穿梭
2.2.1 使用显式 Intent
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
显式Intent可以用于明确指定启动某个Activity,如下所示:
button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
这段代码就表示,将会从FirstActivity跳转到SecondActivity。