【Android入门到项目实战--2.1】—— 活动的基本用法(Toast、Menu、Intent、活动间传递数据)

目录

一、活动的基本用法

1、在活动中使用Toast

2、在活动中使用Menu

二、使用Intent在活动间跳转

1、使用显式Intent

 2、使用隐式Intent

 3、向下一个活动传递数据


本篇文章主要讲解活动的基本用法,包括:Toast、Menu、Intent、活动间传递数据等。

为了过程不过于繁琐,关于活动的创建和启动等操作略过。

一、活动的基本用法

1、在活动中使用Toast

        Toast是一种提醒用户的方式,可以使用它发送短的信息通知给用户,显示一段时间后自动消失,并且不占用屏幕空间,下面尝试一下如何在活动中使用Toast。

布局XML文件代码:

        XML文件是布局文件,可以在屏幕中布置页面,下面先放一个按钮,用于弹出Toast。

<?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="Toast使用"/>
</LinearLayout>

java类代码(部分):

        通过findViewById()方法获取到布局文件中的定义元素,这里获取到id为button_1的按钮元素,通过调用setOnClickListener()方法为按钮注册监听器,点击按钮时执行监听器里的onClick()方法。

        下面再来说一下Toast的用法,通过方法makeText()创建对象,调用show()方法显示,其中makeText()方法需要传入3个参数,第一个是Context上下文,活动本身就是一个Context对象,这里直接传入csdn2.this;第二个是Toast显示的文本内容,第三个是显示的时长,可选Toast.LENGTH_SHORT和Toast.LENGTH_LONG

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_csdn2);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(csdn2.this, "你点击了按钮", Toast.LENGTH_SHORT).show();
            }
        });
    }

效果如下:

2、在活动中使用Menu

什么是Menu?Menu就是应用导航栏边上的三个点,如果你在活动中有大量菜单需要显示,可以考虑使用Menu,效果如下:

下面尝试一下如何实现。

首先在res目录下新建menu文件夹(右键res目录➡New➡Directory),然后在此文件夹下新建名叫main的菜单文件(右键menu文件夹➡New➡Menu resource file)

main.XML文件代码:

创建了两个菜单项,一个是Add一个是Remove。

<?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>

 java类代码:

        在大类下创建如下代码(注意不是OnCreate方法下),该方法用于创建菜单,创建如下代码后,导航栏会出现菜单项,返回true显示菜单栏,返回false则隐藏。

        其中inflate()方法有两个参数,第一个用于指定通过哪个资源文件来创建菜单,第二个用于指定菜单项添加到哪一个Menu对象中。

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

         那么如何使点击菜单有效,还要定义菜单响应事件。

        在大类下创建如下代码(注意不是OnCreate方法下)

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

二、使用Intent在活动间跳转

1、使用显式Intent

创建第二个活动(用于跳转后的页面)

第二个活动布局XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/button_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第二个按钮"/>

</LinearLayout>

主活动java类:

修改button1的点击事件。

button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(csdn2.this,MainActivity.class);
                startActivity(intent);
            }
        });

 注意千万不要忘记在AndroidManifest.XML文件中注册第二个活动,部分代码如下:

        <activity
            android:name=".csdn2"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity"></activity>
    </application>

效果如下:

 2、使用隐式Intent

        下面用隐式Intent实现弹出系统拨号页面。

java类代码:

直接修改按钮点击事件。

 button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:10086"));
                startActivity(intent);
            }
        });

效果如下:

 3、向下一个活动传递数据

        传递数据的思路:putExtra()方法可以把带传递的数据暂存在Intent中,启动另个活动后,把暂存的数据取出即可。

第一个活动java类

        使用显式Intent启动第二个活动,putExtra()方法接收两个参数,第一个是键,用于取值,第二个参数是要传递的数据。

 button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String data = "你好,第二个活动页面";
                Intent intent = new Intent(csdn2.this,MainActivity.class);
                intent.putExtra("extra_data",data);
                startActivity(intent);
            }
        });

 第二个活动java类:

        getStringExtra()方法传入键值,可以得到传递的数据,这里是传递的字符串,注意如果是布尔类型,需要getBooleanExtra()方法。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra_data");
        Log.d("MainActivity",data);
    }


希望本文章对你有帮助,如果你对Android开发感兴趣,请持续关注本专栏,帮助你从入门到项目实战。

猜你喜欢

转载自blog.csdn.net/Tir_zhang/article/details/129642742