Toast: 是Android系统提供的一种良好的提醒方式,可以将一些短小的信息通知给用户,该信息在一段时间后自动消失,并且不占用任何屏幕空间。
Menu: 菜单显示,能让菜单得到展示的同时,还不占用任何屏幕空间。
应用名称为:MenuTest
活动名称为:MenuActivity
活动对应布局名称:activity_menu
创建完项目和主活动后,仅修改main.xml和MenuActivity.java
<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>
package com.example.thinkpad.menutest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MenuActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
}
@Override
//重写该函数,创建菜单
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main,menu);
//通过getMenuInflater()方法得到MenuInflater对象
//调用该对象的inflate()方法创建菜单
//该方法第一个参数指定通过哪一个资源文件来创建菜单
//第二个参数指定我们的菜单项将要添加到哪一个Menu对象中
return true;
//返回true表示允许创建的菜单显示出来,返回false则创建的菜单将无法显示
}
@Override
//重新该方法,定义菜单响应事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
//静态方法makeText()创建一个Toast对象
//第一个参数为Toast要求的上下文
//第二个参数为Toast显示的文本内容
//第三个参数为Toast显示的时长:两个内置常量
//Toast.LENGTH_SHORT && Toast.LENGTH_LONG
//show()方法将Toast显示出来
break;
case R.id.remove_item:
Toast.makeText(this,"You clicked Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
}
是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。一般用于启动活动、启动服务以及发送广播等场景。
//写在按钮的点击事件函数中
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
//构建一个Intent,第一个参数为上下文,第二个参数为目标活动
startActivity(intent);
//Activity类中一个专门用于启动活动的函数
//单击按钮即可从FirstActivity跳转到SecondActivity
隐式Intent并不明确指出想要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,帮助我们找到合适的活动启动。
<activity android:name=".SecondActivity" >
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
intent-filter>
activity>
intent.addCategory("com.example.activitytest.MY_CATEGORY");
//给Intent增加一个category
//写在按钮的点击事件函数中
Intent intent = new Intent(Intent.ACTION_VIEW);
//指定intent的action为Intent.ACTION_VIEW
//Intent.ACTION_VIEW是Android系统的一个内置动作
intent.setData(Uri.parse("http://www.baidu.com"));
//通过Uri.parse()方法将网址字符串解析成一个Uri对象
//通过setData()方法将这个Uri对象传递进去
startActivity(intent);
//单击按钮即可打开浏览器进入百度首页
//写在按钮的点击事件函数中
Intent intent = new Intent(Intent.ACTION_DIAL);
//指定intent的action为Intent.ACTION_DIAL
//Intent.ACTION_DIAL是Android系统的一个内置动作
intent.setData(Uri.parse("tel:10086"));
//指定了协议为tel号码为10086
startActivity(intent);
//单击按钮即可拨号10086
android:scheme 用于指定数据的协议部分
android:host 用于指定数据的主机名部分
android:port 用于指定数据的端口部分
android:path 用于指定主机名和端口之后的部分
android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data",data);
//将要传递的数据以键值对暂存于Intent当中
startActivity(intent);
Intent intent = getIntent();
//通过getIntent()获取到用于启动SecondActivity的Intent
String data = intent.getStringExtra("extra_data");
//调用getXxxExtra()传入相应键值获得数据
Log.d("SecondActivity",data);
FirstActivity.java
//写在按钮的点击事件函数中
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
//第一个参数为Intent,第二个参数为请求码,用于在之后的回调中判断数据的来源
//请求码只要是唯一值就可以了
//重写onActivityResult()方法
@override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
//第一个参数为请求码,第二个参数为处理结果,第三个参数为携带返回数据的Intent
switch(requestCode){
case 1:
if(resultCode == RESULT_OK){
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity",returnedData);
}
break;
default:
}
//由于在一个活动中可能会调用startActivityForResult()来启动很多活动
//所以首先要检查requestCode判断数据来源
//通过resultCode判断处理结果是否成功
}
SecondActivity.java
//写在按钮的点击事件函数中
Intent intent = new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);//专门用于向上一个活动返回数据
//第一个参数用于向上一个活动返回处理结果,一般为RESULT_OK或者RESULT_CANCELED
//第二个参数则把带有数据的Intent传递回去
finish();
//重写onBackPressed()方法,防止因按下Back键返回活动,导致数据没有传回
@override
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
整理学习自郭霖大佬的《第一行代码》
目前小白一名,持续学习Android中,如有错误请批评指正!