1.Toast提醒
为昨天写的按钮程序添加一个提醒,在MainActivity中添加如下代码:
Button bt1 = (Button) findViewById(R.id.button_1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "您点击了按钮1", Toast.LENGTH_SHORT).show();
}
});
findViewById()方法用于获得布局文件文件中的元素,值通过属性Id指定。(该返回值是View对象,需要转成Button对象)
setOnClickListener()方法是用于注册监听器,点击执行
makeText()方法需要三个参数,第一个是context(toast要求的上下文,活动本身就是一个context),第二个是显示的内容,第三个是显示的时常。
运行结果如下:
2.Menu菜单
首先在res目录下创建一个menu文件夹,并在文件内创建一个xml文件,命名为main
main.xml文件中代码如下:
每个item标签为定义一个菜单中的选项
在MainActivity中添加如下代码,重写onCreatOptionsMenu()方法
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
getMenuInflater()方法能够得到MenuInflater对象,再调用inflate()方法可以给当前活动创建菜单。inflate()方法需要两个参数,第一个是从哪个资源文件来创建菜单,第二个用于指定菜单项添加到哪个Menu对象中。(返回值true用于将菜单显示出来)
运行结果如下:
3.为Menu菜单添加监听器
在MainActivity中添加如下代码,重写onOptionsItemSelected()方法
public boolean onOptionsItemSelected(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;
}
通过item.getItemId()方法来判断点击的是哪个菜单项。
运行结果如下(点击Add):
4.显式Intent
首先再创建一个Activity,命名为SecondActivity
public class SecondActivity extends AppCompatActivity{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
在layout中再创建一个xml,命名为activity_second
我让这个新的活动显示Hello World
最后到AndroidManifest中给新的活动注册
为了能够使用第二个活动,将MainActivity中的button的监听器改为:
Button bt1 = (Button) findViewById(R.id.button_1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
程序运行结果如下(点击按钮Button 1):
Intent()方法需要两个参数,第一个参数context要求提供各一个启动活动的上下文,第二个参数class则是指定想要启动的活动目标。
startActivity()方法用于启动活动,来执行这个Intent。
5.隐式Intent
首先在AndroidManifest中修改刚才注册的SecondActivity:
然后修改MainActivity中的按钮监听器:
Button bt1 = (Button) findViewById(R.id.button_1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("bistu.com.test.ACTION_START");
startActivity(intent);
}
});
然后运行这个程序,跟刚才的显式效果一样。
会发现在监听器中并没有指定category,实际上默认为DEFAULT。
如果在监听器中加上一句“intent.addCategory("bistu.com.test.MY_CATEGORY")”,则会报错,只需要在活动注册中,添加“”即可。
6.更多隐式Intent用法
①.将按钮改为点击打开网页,将MainActivity中的监听器修改为:
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
}
});
运行结果如下:
(点击Button后,用浏览器打开了百度的网站)
通过Uri.parse()方法将王志字符串解析成一个Uri对象,调用Insert的setData()方法将这个Uri对象传递进去。
②.在①的基础上,让这个程序适配网页
修改注册代码为:
点击按钮后:
可以选择用该软件来适配网页(但是不能使用)
③.调用系统拨号界面
将按钮的监听器改为:
bt1.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);
}
});
点击button后如下: