安卓开发 主要是以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 }