rec目录下建立menu得文件夹
在menu文件夹下建立menu
可以看见自动创建了
在布局文件内写两个item,
两个菜单项
Ctrl+O重写方法
重写成如图所示
public class FirstActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
#这端代码是相应菜单事件的,item.getItemId()调用这个方法来判断逻辑.也是需要重写这个方法
@Override
public boolean onOptionsItemSelected(@NonNull 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 clikedRemove",
Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
通过getMenuLnter方法得到MenuLNflater对象,再调用它的inflater方法给当前活动创建菜单.两个参数,一个指定用什么资源文件.第二个参数是指定我们的菜单项加到哪一个Menu对象里面
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
直接用了menu参数,这个方法返回true,表示允许创建菜单显示
右上三点
点击以后
如何销毁一个活动.摁返回就可以.也可以写一个方法finish()方法,如图所示
创建一个新活动
活动2
我是不是喝醉了,这是什么截图.自动生成的代码
可以看的出来
创建一个按钮,Button 2
可以看见,在清单文件内.已经注册上活动2了
此时引入新概念intent,各组件之间交互的一种重要方式.
intent函数有多个函数的重载.
如何使用,在Activity类里面专门有一个startActivity()方法就可以启动目标活动.
首先先构建一个intent,传入FirstActivity.this作为上下文,传入SecondActiviy.this作为目标活动.此时不放图了
使用隐式intent,并不明确指出我们启动哪一个活动.
而是指定一系列更为抽象的action和category等信息.
然后系统自己分析.
以上就是添加,能够响应当前活动的action和category.
同时能够匹配上Intent
修改点击事件,使用Intent的另一个构造函数.
将anction的字符串传了进去.能够启动action的活动.
但是这个地方没有看法哦category.
因为这个式默认的catgory
现在再来添加一个category
报错,没有可以响应的category
所以再添加一个category
还可以调用其它应用程序.
修改代码,让它打开一个网站.
指定action的action是VIEW.
通过Uri.parse()将一个网址字符串解析为Uri对象.
再调用intent的setData()方法将对象传递出去.
创建一个新的活动
把里面的东西换成
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 3"
/>
</LinearLayout>
活动和界面都有了
与此对应,我们还可以在<intent-filter>标签中再配置一个<data>标签,用于更精确地指定当前活动能够响应什么类型的数据。<data>标签中主要可以配置以下内容。
❑ android:scheme。用于指定数据的协议部分,如上例中的http部分。
❑ android:host。用于指定数据的主机名部分,如上例中的www.baidu.com部分。
❑ android:port。用于指定数据的端口部分,一般紧随在主机名之后。
❑ android:path。用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
❑ android:mimeType。用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该Intent。不过一般在<data>标签中都不会指定过多的内容,如上面浏览器示例中,其实只需要指定android:scheme为http,就可以响应所有的http协议的Intent了。
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
系统拨号界面