Activity之间通信----皮毛

来源:互联网 发布:爱奇艺网络存在危险 编辑:程序博客网 时间:2024/04/28 18:19

创建activity问题:activity之间的通信

1、R文件的导包问题

在Java文件中使用R.layout或id时找不到对应的id号时,可能是因为Import android.app.R的原因,这时只要将android.app.R改为你的gen目录下完整的包名就可以了。

2、Android中activity文件的配置问题

配置启动的Activity,给予activity权限。

3、activity之间的通信:

(1)显式Intent通信:

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);//第一个参数是启动活动的上下文,第二个参数是目标活动startActivity(intent);
 (2)显示Intent带返回值的通信: 

FirstActivity:Intent intent=new Intent(FirstActivity.this,SecondActivity.class);startActivityForResult(intent,1);//1为请求码,用于标识activity/*以上代码写在需要的地方,我写在了一个button的事件里,点击跳转到另外一个activity*/FirstActivity:@overridepublic void onActivityResult(int requestCode,int resultCode,Intent data){//requestCode是前面的请求码,resultCode是SecondActivity返回的码,data是SecondActivity返回的数据switch(requestCode){case 1:if(resultCode==RESULT_OK){String result=date.getStringExtra("resultReturn");Toast.makeText(getApplicationContent(),result,Toast.RESULT_OK).show();}break;default:}}/*以上代码为Activity的重载方法,当调用startActivityForResult()方法进入下一个activity后,下一个activity方法调用setResult()方法就会回调第一个activity的onActivityResult()方法,在本方法里可以对各种情况进行处理:是哪一个activity的请求码,该activity的结果码是什么,然后获取数据进行详细处理。*/SecondActivity:Intent intent =new Intent();intent.putExtra("returnResult","SecondActivity created  successed!");setResult(RESULT_OK,intent);finish();/*以上代码,根据需要使用,我写在了一个button的事件中,点击button时返回到第一个activity。*/@overridepublic void onBackPressed(){Intent intent=new Intent();intent.putExtra("returnResult","secondActivity created successed! ");setResult(RESULT_OK,intent);finish();}/*以上代码在点击回退键返回到第一个activity中时使用,作用与前一段代码相同,创建intent,添加数据,返回结果,退出当前activity*/
  (3)隐式传递Intent:
要点:利用了Intent类的另外一个构造函数,参数是在配置文件中指定的参数,action只能有一个,category可以有多个,当有多个category时,可以使用
intent的addCategory方法来添加进行activity的匹配;使用隐式传递Intent的主要目的是使多个程序共享activity的信息,并用不同的程序处理信息。
1、打开浏览器
新创建一个activity名为thirdActivity,对应的布局文件,只要一个LinearLayout布局就可以了,回到thirdActivity中setContentView()该布局文件,
进入配置文件中配置activity,如下:
<application...>...<activityandroid:name=".thirdActivity"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="http"/></intent-filter></activity></application>
然后进入secondActivity的布局文件中添加一个button,在secondActivity的java文件中获取button添加事件,事件内容如下:

Intent intent=new Intent("Intent.ACTION_VIEW");intent.setData(Uri.parse("http:www.baidu.com"));//向目标activity传递数据,注意http一定不能少startActivity(intent);
这样进入secondActivity中点击按钮,就可以选择程序打开该activity,选择浏览器打开,就可以在浏览器中浏览内容了。
2、打开电话
新建一个名为forthActivity的activity,同样,对应的布局文件,只要一个LinearLayout布局就可以了,回到forthActivity中显示该布局文件,进入配置

中配置activity文件,内容如下:

<application...>...<activityandroid:name=".forthActivity"><intent-filter><action android:name="android.intent.action.DIAL"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="tel"/></intent-filter></activity></application>

然后在secondActivity中添加按钮,添加事件,事件内容如下:

Intent intent=new Intent("Intent.ACTION_DIAL");intent.setData(Uri.Prase("tel:10086"));//向目标Activity传递数据,tel一定不能少startActivity(intent);



这样在secondActivity中点击相应按钮就会跳转到选择页面,点击Phone选项进入电话界面。
3、其余的以后碰到了再补充。


人,总是为了活下去而不断努力的,但就这一点,我又有什么理由去享乐呢?所以这些还不够……还有好多坑,socket通信,线程,新闻列表,jsp,asp,数据结构,操作系统,UML建模,网络信息安全,反射,swing编程……真的太多太多,一本笔记本都快用完了,一直没有时间去做博客,但是以后一点点腾时间吧。



原创粉丝点击