Activity的使用
Activity是Android程序的四大组件之一,也是呈现给用户的第一印象,因此对于这个组件的编程是非常重要的。
创建Activity
创建Activity非常简单,在AS中,切换到Project目录下,寻找包文件夹,在其上右击,新建一个空的activity,AS会默认帮我们在Manifest中进行注册,并且程序会自动重写Oncreate方法
菜单选项的使用
要想在Activity中添加菜单栏,实现如下的效果:
首先需要在res目录下新建menu文件夹,在menu文件夹中新建一个menu类型资源文件,文件代码如下:
<?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>
此时已经可以使用AS的预览功能查看到菜单栏了,但是仍然需要在Activity中激活一下,在activity.java中重写
public boolean onCreateOptionsMenu(Menu menu){};
函数,这里可以使用AS快捷键Ctrl+O,搜索此函数
重写完以上函数后,两个菜单项并不能实现其功能,需要再重写一下public boolean onOptionsItemSelected(MenuItem item) {}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
Toast的使用
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。
toast的使用非常简单,只需要使用静态方法makeText()即可实现
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
// toast.setGravity(Gravity.CENTER, 0, 0); 实例方法,设置出现位置
/*
toast.setGravity(Gravity.CENTER, 0, 0);
LinearLayout toastView = (LinearLayout) toast.getView();
ImageView imageCodeProject = new ImageView(getApplicationContext());
imageCodeProject.setImageResource(R.drawable.icon);
toastView.addView(imageCodeProject, 0);
*/
// 设置带图片的toast
效果图:
Activity切换
最简单的切换方式,显式Intent,即指明打开新的Activity的名字:
Intent intent = new Intent(MainActivity.this,Main2Activity.class);// 去往的参数填一个class文件
startActivity(intent);
复杂一点的是隐式切换:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
这里是打开系统默认的Activity,比如这里打开的就是浏览器,当然,如果别的Activity也可以在manifest中进行注册,隐式Intent打开的是符合注册条件的activity,若存在多个符合条件会提供给用户进行选择
<activity android:name=".Main3Activity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
Intent传递数据
使用Intent可以在Activity中传递数据,一种简单的方法是:
String data = "Hello,My activity";
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("extra_data",data);
startActivityt();
// Main2Activity中接受数据的部分
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d(TAG, data);
还有一种方法是调用Main2Activity的MainActivity从被调用的获得数据:
// MainActivity中的代码
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);
//另外要重写onActivityResult来获取返回数据,这里的requestCode就是我们刚才设置的1,这样这个函数就可以处理多个request了
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode==RESULT_OK){
String returndata = data.getStringExtra("data_back");
Log.d(TAG,returndata);
}break;
default:
}
}
// Main2Activity中的代码
Intent intent = new Intent();
intent.putExtra("data_back","Hello,my mainactivity");
setResult(RESULT_OK,intent);
// 也可以重写onBackPress的方法,加入上面代码