码迷,mamicode.com
首页 > 移动开发 > 详细

Android学习第二天:Toast(提醒)、Menu(菜单)、Intent的显式和隐式(包括打开、适配网站,调用拨号界面等)

时间:2016-07-14 15:42:37      阅读:703      评论:0      收藏:0      [点我收藏+]

标签:


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文件中代码如下:

<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>

每个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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/hello_world"  />

</LinearLayout>


我让这个新的活动显示Hello World

最后到AndroidManifest中给新的活动注册

<activity android:name=".SecondActivity">
</activity>

为了能够使用第二个活动,将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:

<activity android:name=".SecondActivity">
    <intent-filter>
        <action android:name="bistu.com.test.ACTION_START"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

然后修改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")”,则会报错,只需要在活动注册中,添加“<category android:name="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("http://www.baidu.com"));
        startActivity(intent);
    }
});

运行结果如下:
技术分享

技术分享
(点击Button后,用浏览器打开了百度的网站)
通过Uri.parse()方法将王志字符串解析成一个Uri对象,调用Insert的setData()方法将这个Uri对象传递进去。

②.在①的基础上,让这个程序适配网页

修改注册代码为:

<activity android:name=".SecondActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="http"/>
    </intent-filter>
</activity>

点击按钮后:
技术分享

技术分享
可以选择用该软件来适配网页(但是不能使用)

③.调用系统拨号界面

将按钮的监听器改为:

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后如下:
技术分享
技术分享



Android学习第二天:Toast(提醒)、Menu(菜单)、Intent的显式和隐式(包括打开、适配网站,调用拨号界面等)

标签:

原文地址:http://blog.csdn.net/syker_guo/article/details/51901356

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!