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

安卓开发 activity和intent初步学习

时间:2015-07-27 01:51:48      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

安卓开发 主要是以activity为基础

若要实现一个activity  必须要在AndroidManifest.xml这个文件进行注册

1 <activity
2             android:name=".FirstActivity"
3             android:label="This is the first activity which i code">
4             <intent-filter>
5                 <action android:name="android.intent.action.MAIN" />
6                 <category android:name ="android.intent.category.LAUNCHER"/>
7             </intent-filter>            
8</activity>

 

<intent-filter>是一个意图筛选器  android.intent.action.MAIN和android.intent.category.LAUNCHER 就表明这是主活动和第一个启动的活动

intent可以用作两个activity直接的连接

1          Intent intent=new Intent(SecondActivity.this,ThirdActivity.class);                
2                 startActivity(intent);

这是显式调用两个活动

如果隐式调用 则要把action和category对应起来

1 public void onClick(View v) {
2                 
3                    Intent intent=new Intent("com.example.activitytest.ACTION_START");
4                    intent.addCategory("com.example.acivitytest.MY_Category");
5                    startActivity(intent);
6                 }
7             });

如上建立一个Intent对象  实例化的时候传入一个字符串 就是在AndroidManifest.xml注册的action 每个活动的action只能有一个 而category可以有多个

如果intent不添加Category 那么默认的Category就是android.intent.category.DEFAULT

上文代码调用活动的AndroidManifest.xml如下

1 <activity 
2              android:name=".SecondActivity">
3              <intent-filter >
4                  <action android:name="com.example.activitytest.ACTION_START"/>
5                  <category android:name="android.intent.category.DEFAULT"/>
6                  <category android:name="com.example.acivitytest.MY_Category"/>
7              </intent-filter>
8</activity>

 

上面是一个activity启动另一个activity

如果要在两个activity之间传递消息呢? 那就要用intent的putExtra方法

1           String data ="hello ";
2                 Intent intent=new Intent(SecondActivity.this,ThirdActivity.class);
3                 intent.putExtra("test_data", data);
4                 startActivity(intent);

在ThirdActivity中要这样接受

1         Intent intent=getIntent();        
2         String data=intent.getStringExtra("test_data");
3         Log.d("ThirdActivity",data);                    

如果要从上一层返回给上一层呢?

那么在启动活动的时候不懂使用startActivity方法 而是要用startActivityForResult 并且多传入一个key进行对应

1 @Override
2             public void onClick(View v) {
3                 Intent intent=new Intent(SecondActivity.this,ThirdActivity.class);
4                 startActivityForResult(intent,1);
5             }

返回的时候要重写一个onBackPressed方法

1     @Override
2     public void onBackPressed(){
3         Intent intent=new Intent();
4         intent.putExtra("data_return", "hello second");
5         setResult(RESULT_OK,intent);
6         finish();
7     }

而在返回以后同样要重写一个接受的方法onActivityResult  有三个参数 如下代码

 1 protected void onActivityResult(int requestCode,int resultCode,Intent data)
 2     {
 3         switch(requestCode)
 4         {
 5             case 1:if(resultCode==RESULT_OK){
 6                 String returnedData=data.getStringExtra("data_return");
 7                 Log.d("secondActivity",returnedData);
 8             }
 9             break;
10             default:
11         }
12     }

 

安卓开发 activity和intent初步学习

标签:

原文地址:http://www.cnblogs.com/threezj/p/4679081.html

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