《第一行代码》第二章/Toast,Menu,Intent

1:Toast:

      Toast是一个提醒消息框,用于将一些短小的信息通知给用户,不占用屏幕空间,而且会在一段时间后自动消失。

例子

Toast.makeText(this, "xxxxxxx", Toast.LENGTH_SHORT).show();
参数:(context上下文,"文本信息",toast显示时长)

2:menu:

     在res/menu/目录下新建xml文件,在里面写入类似这样的代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.tony.book.activitymenu.MainActivity" >

    
    <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" />
    <item android:id="@+id/add_item" android:title="Add"></item>
    <item android:id="@+id/remove_item" android:title="remove"></item>

</menu></span>
然后在mainActivity中重写onCreateOptionMenu()为当前活动创建菜单和onOptionsItemSelected()添加菜单相应事件,如:

@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		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;
		default:
			break;
		}
		return true;
	}

3:Intent:

用于在Activity,Service,广播,内容提供器等组件间来回穿梭,跳转。

Intent可以指定用于启动活动,服务,广播等,或者在组件间来回传递信息。主要分为显式Intent和隐式Intent。

1)显式Intent

举例:启动另一个活动:

Intent intent=new Intent(MainActivity.this,secondActivity.class);
startActivity(intent);
Intent有多种构造函数,我们选用其中一种来完成启动下一个活动的功能。重载该构造函数(context上下文,要打开的活动)并将意图具现化为intent,传入startActivity()启动目标活动。

2)隐式Intent

并不明确指出我们要启动哪一个活动,通过action,category等信息表达,交由系统分析到底做什么。

例子:

在AndroidManifest.xml文件中的第二个活动(要打开的)的<activity>部分中添加<intent-filter>,在其中指定该活动响应的action和category。

添加<intent-filter>部分:

<activity android:name=".secondActivity"
                  android:launchMode="singleInstance">
            <intent-filter >
                <action android:name="com.example.activitytest.ACTION_START" />
                <category android:name="android.intent.category.DEFAULT"/>
                 <category android:name="com.example.activitytest.MY_CATEGORY" />
            </intent-filter>
        </activity>

当其与开始的活动的Intent指定的action和category匹配时,这个活动就会响应Intent。

有点像广播的说。

Intent指定action和category:

Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");

更多隐式Intent的用法:

打开网页:

调用Android内置动作ACTION_VIEW,即打开系统浏览器。通过Uri.parse()将一个网址字符串解析成一个Uri对象,调用Intent的setData()方法传入uri。

Intent intent=new Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("http://www.baidu.com"))

同样需要在AndroidManifest.xml里注册

<data android:scheme="http">


再比如在活动中调用拨号

Intent intent=new Intent(Intent.ACTION_DIAL)
intent.setData(Uri.parse("tel:10086))

3)那么如何在活动之间传递数据呢?

范例:从FirstActivity传data到SecondActivity

FirstActivity:

String data="Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", "data");//(键,数据)
startActivity(intent);

SecondActivity:

onCreate():

Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);

4)返回数据给上一个活动

范例:从FirstActivity返回data到SecondActivityFirstActivity:

使用startActivityForResult()以返回数据的目的启动SecondActivity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent,1);
1是请求码

得到数据:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		switch (requestCode) {
		case 1:
			if(resultCode==RESULT_OK){
				String returnedData=data.getStringExtra("data_return");
				Log.d("MainActivity", returnedData);
			}
			break;

		default:
			break;
		}
	}



SecondActivity:

Intent intent=new Intent();
intent.putExtra("data_return", "Hello MainActivity");
setResult(RESULT_OK, intent);//(处理结果,数据)
finish();





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值