活动(activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。
在AndroidManifest文件中注册
所有的活动都需要在AndroidManifest.xml中注册。不过Android Studio会自动进行注册
<application android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
在<application>标签中:
android:icon设置APP的图标,安装在手机上的APP图标就是这个。
android:label设置APP的标题,安装在手机上的APP标题就是这个。
通过<activity>标签来进行活动注册。
Toast提示
Toast.makeText(FirstActivity.this,"这是按钮",Toast.LENGTH_SHORT).show();
Toast通过静态方法makeText()创建,让后调用show()将其显示出来。
makeText()方法需要3个参数:
- Context
- Toast所需文本
- Toast所需时长 有两个内置常量Toast.LENGTH_SHORT和Toast.LENGTH_LONG
Menu菜单
- res中新建一个menu文件夹,在menu中建立新建布局文件。
<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"/>
<item android:id="@+id/finish_item"
android:title="Finish"/>
</menu>
<item>标签就是用来创建具体的某一项菜单项。
- 在Activity中重写onCreateOptionsMenu()方法【快捷键Ctrl+o】
@Overridepublic boolean onCreateOptionsMenu(Menu menu)
{
//通过getMenulnflater()方法能够得到MenuInflater对象,再调用它的inflate()方法就可以给当前活动创建菜单了。
//inflate方法两个参数,第一个用于指定我们通过哪一个资源文件,第二个用于指定我们的菜单项添加到哪一个menu对象中。
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
- 继续重写onOptionsItemSelected()方法,为菜单添加响应事件
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(FirstActivity.this,"这是add按钮",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(FirstActivity.this,"这是remove按钮",Toast.LENGTH_SHORT).show();
break;
case R.id.finish_item:
Toast.makeText(FirstActivity.this,"这是finish按钮",Toast.LENGTH_SHORT).show();
finish();//关闭当前活动
break;
}
return true;
}
Intent
Intent是Android程序中各个组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
1. 显式Intent
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
2. 隐式Intent
在AndroidManifest.xml中的<activity>标签下配置<intent-filter>的内容,其中可以指定<action>,<category>,<data>三个标签:
<activity android:name=".ThirdActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
当<action><category>中的内容同时能够匹配上Intent中指定的action和actegory时,这个活动才能响应该Intent。<data>标签用于更精确地指定当前活动能够响应什么类型的数据。
<data>标签配置
- android:scheme 用于指定数据的协议部分
- android:host 用于指定数据的主机名部分
- android:port 用与指定数据的端口部分
- android:path 用于指定主机名和端口之后的部分
- android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
3. Intent数据传递
- 向下一个活动传递数据
通过putExtra()方法传递一个字符串
Intent intent = new Intent();
intent.putExtra("data","Hello SecondActivity");
startActivity(intent);
通过getIntent()方法获取到启动activity的Intent,让后通过getStringExtra取得字符串。
Intent intent = getIntent();
String data = intent.getStringExtra("data");
Log.d("SecondActivity",data);
- 返回数据给上一个活动
可通过startActivityForResult()方法实现。该方法期望活动结束后返回一个j结果给上一个活动。其接受两个参数:Intent和请求码。请求码唯一。
//FirstActivity中
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
//SecondActivity
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentClick = new Intent();
intentClick.putExtra("data_return","Hello FirstActivity");
//setResult()方法中,第一个参数用于向上一个活动返回处理结果,第二个参数则是带有数据的Intent。
setResult(RESULT_OK,intentClick);
finish();
}
}
);
//FirstActivity中重写onActivityResult()方法
//该方法带有三个参数:
//requestCode 请求码、resultCode 返回数据时传入的结果集、data 带参的Intent
@Overrideprotected void onActivityResult(int requestCode, int
resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode == RESULT_OK){
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity",returnedData);
}
break;
default:
}
}
//还可以在SecondActivity中重写onBackPressed()方法实现点击Back键返回数据
@Overridepublic void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
当然上面的内容只是一部分而已,想更深入的了解还得在继续研究。同样我还找到一些其他的资料,比如:
intent Filter
其他人的阅读笔记
Android Developers
这里仅仅是我记录的部分笔记,以备回顾记忆
如有侵权请联系我,我将进行修改和删除
网友评论