目录
本篇文章主要讲解活动的基本用法,包括: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开发感兴趣,请持续关注本专栏,帮助你从入门到项目实战。