活动的基本用法

活动(Activity)它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序中可以包含零个或多个活动,但不包含任何活动的应用程序很少见。

创建 Activity

活动都应该重写 Activity 的 onCreate()方法

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

onCreate() 方法调用了父类的方法。这只是默认的实现,后面我们还需要在里面加入很多自己的逻辑。

创建和加载布局

布局文件的代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="pub.weber.bym.activitytest.MainActivity">

    <Button
        android:id="@+id/button_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"
        />
</LinearLayout>

重新回到 MainActivity 在 onCreate() 方法中 super.onCreate(savedInstanceState); 下面加入如下代码:

setContentView(R.layout.activity_main);

调用了 setContentView()方法来给当前的活动加载一个布局,而在setContentView()方法中,我们一般都会传入一个布局文件的 id。

在 AndroidManifest 文件中注册

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pub.weber.bym.activitytest">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="第一个程序">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

android:label指定活动中标题栏的内容,标题栏是显示在活动最顶部。给主活动指定的 label 不仅会成为标题栏中的内容,还会成为启动器(Launcher)中应用程序显示的名称。

隐藏标题栏

setContentView(R.layout.first_layout); 这句的前面加上 requestWindowFeature(Window.FEATURE_NO_TITLE); ,意思就是不在活动中显示标题栏,注意这句代码一定要在 setContentView()之前执行,不然会报错。

在活动中使用 Toast

我们使用页面上的按钮来触发点击事件,然后弹出一个 Toast 。在 onCreate()方法中添加代码

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button_1);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"你点了按钮",Toast.LENGTH_SHORT).show();
        }
    });
}

在活动中,可以通过 findViewById()方法获取到在布局文件中定义的元素,这里我们传入 R.id.button_1,来得到按钮的实例,这个值是刚才在 activity_main.xml 中通过 android:id 属性指定的。findViewById()方法返回的是一个 View 对象,我们需要向下转型将它转成Button对象。得到了按钮的实例之后,我们通过调用 setOnClickListener()方法为按钮注册一个监听器,点击按钮时就会执行监听器中的 onClick()方法。因此,弹出 Toast 的功能当然是要在onClick()方法中编写了。

Toast的用法非常简单,通过静态方法 makeText()创建出一个 Toast对象,然后调用 show()将 Toast 显示出来就可以了。这里需要注意的是,makeText()方法需要传入三个参数。第一个参数是 Context,也就是 Toast 要求的上下文,由于活动本身就是一个 Context 对象,因此这里直接传入 MainActivity.this即可。第二个参数是Toast显示的文本内容,第三个参数是Toast显示的时长,有两个内置常量可以选择 Toast.LENGTH_SHORTToast.LENGTH_LONG

在活动中使用 Menu

新建一个 menu 文件夹

右击 menu 文件夹 → New → Menu resource file

<?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="添加" />
    <item android:id="@+id/remove_item"
        android:title="删除" />
</menu>

然后打开 MainActivity,重写 onCreateOptionsMenu()方法,代码如下

@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.main,menu);
    return true;
}

通过 getMenuInflater()方法能够得到 MenuInflater对象,再调用它的 inflate()方法就可以给当前活动创建菜单了。inflate()方法接收两个参数,第一个参数用于指定我们通过哪一个资源文件来创建菜单,这里当然传入 R.menu.main,第二个参数用于指定我们的菜单项将添加到哪一个 Menu对象当中,这里直接使用onCreateOptionsMenu()方法中传入的 menu参数。然后给这个方法返回true,表示允许创建的菜单显示出来,如果返回了 false,创建的菜单将无法显示。

还要再定义菜单响应事件 ,在 MainActivity 中重写 onOptionsItemSelected()方法。

public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
        case R.id.add_item:
            Toast.makeText(this,"你点击了添加",Toast.LENGTH_SHORT).show();
            break;
        case R.id.remove_item:
            Toast.makeText(this,"你点击了删除",Toast.LENGTH_SHORT).show();
            break;
        default:
    }
    return true;
}

onOptionsItemSelected()方法中,通过调用 item.getItemId()来判断我们点击的是哪一个菜单项,然后给每个菜单项加入自己的逻辑处理,这里我们就弹出一个 Toast。

销毁一个活动

只要按一下 Back 键就可以销毁当前的活动了。不过如果你不想通过按键的方式,而是希望在程序中通过代码来销毁活动,当然也可以,Activity 类提供了一个 finish()方法,我们在活动中调用一下这个方法就可以销毁当前活动了。

button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

by web开发者 from http://weber.pub/

本文地址: http://weber.pub/安卓笔记4活动的基本用法/287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值