《Android第一行代码》first reading 二
活动(activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。
在AndroidManifest文件中注册
所有的活动都需要在AndroidManifest.xml中注册。不过Android Studio会自动进行注册
在标签中:
android:icon设置APP的图标,安装在手机上的APP图标就是这个。
android:label设置APP的标题,安装在手机上的APP标题就是这个。
通过标签来进行活动注册。
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中建立新建布局文件。
- 在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中的标签下配置
当
标签配置
- 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);
//SecondActivitybutton.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
这里仅仅是我记录的部分笔记,以备回顾记忆
如有侵权请联系我,我将进行修改和删除
更多相关文章
- Android关于socket编程,实现与服务器端通信
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法
- Xamarin.Android(安卓)的照相機使用
- AsyncTask类的用法
- Android(安卓)View绘制及实践
- Android(安卓)中使用WebViewJavaScriptBridge进行H5和原生的交互
- Android歌词秀设计思路(1)SafetyTimer
- App Widget Framework分析之一:AppWidgetService
- Android(安卓)View系列(一):View的基础知识