zoukankan      html  css  js  c++  java
  • ###Intent的使用(活动中穿梭)

    让活动切换有两种方式

      显示意图和隐式意图

    显示意图:只能在本应用中穿梭;

    隐式意图:可以调用其他应用程序的活动,包括系统应用,但是需要配置清单文件

    1. 显式Intent

    1) 创建一个新的活动

    2) 确定进入新活动的条件

    1 Intent intent = new Intent(FirstActivity.this, SecondActivity.class);//第一个参数为上下文,第二个参数是新活动的类
    2 startActivity(intent); //启用活动

    也可以使用方法

    getClass(上下文,class);

    1. 隐式Intent

    配置清单文件

     1  <activity
     2      android:name="com.example.tangwanzun_2.MainActivity"
     3      android:label="@string/app_name" >
     4      <intent-filter>
     5           <!-- 这里的name是自己起的名字,用来在隐式意图中确认传递的目标-->
     6           <action android:name="android.intent.action.MyIntent" />
     7           <!-- 这里表示的是改活动运行的平台,DEFAULT是手机平台,注意这里不能是LAUNCHER,否则程序运行出错 。LAUNCHER的意思是主活动的意思-->
     8           <category android:name="android.intent.category.DEFAULT" />
     9     </intent-filter>
    10  </activity>    

    ###在活动之间传递数据

    隐式意图和显示意图都是可以传递数据的

    普通数据的的传值方式

    1. 向下一个活动传递数据

    1) 发送方:

    a)      new一个intent

    b)      使用方法putExtra(“键值”,传递的数据);来传递数

    c)      startActivity(intent); //启用活动

    1 //隐式传值
    2  Intent intent = new Intent();
    3  intent.putExtra("Myage", age);
    4  intent.putExtra("Myname", name);
    5  intent.setClass(MainActivity.this,MainActivity_2.class);     startActivity(intent);
    1 //显式传值    
    2 Intent intent = new Intent();
    3 intent.putExtra("Myage", age);
    4 intent.putExtra("Myname", name);
    5 intent.setAction("android.intent.action.MyIntent");
    6 startActivity(intent);

    2) 接收方:

    a)      创建一个intent对象 = getIntent();

    b)      使用方法getStringExtra(“键值”);来得到数据-----此方法返回一个String

    1 Intent intent = getIntent();
    2 String age = intent.getExtra("Myage");
    3 String name = intent.getExtra("Myname");

    Bundle传递值的方式

    1)  发送方

    a)      new一个intent

    b)  new一个Bundle

    c)  Bundle使用方法putString(“键值”,数据);

    d)      Intent使用方法putExtra(Bundle);

    e)      startActivity(intent); //启用活动

    1     Intent intent = new Intent();
    2     Bundle bundle = new Bundle();
    3     bundle.putString("Myname", name);
    4     bundle.putString("Myage", age);
    5     intent.putExtras(bundle);
    6     intent.setClass(MainActivity.this, MainActivity_2.class);
    7     startActivity(intent);

    2)  接收方

    a)      创建一个intent对象 = getIntent();

    b)  创建一个Bundle对象 = intent.getExtra();

    b)      Bundle使用方法getString(键值”);来得到数据-----此方法返回一个String

    1     Intent intent = getIntent();
    2     Bundle bundle = intent.getExtras();
    3     String age = bundle.getString("Myage");
    4     String name  = bundle.getString("Myname");

    数据的回传

    1) 创建的第一个活动

    a)      建立Intent,并找到第二个活动

    b)      startActivityForResult(intent, 数据请求值);//数据请求值是一个int

    c)      重写方法

    //用来处理回传值的
    
    //第一个int是接收是第一个活动创建时的请求值
    
    //第二个int是接收是第二个活动返回数据时的请求值
    
    //第三个参数是接收的数据
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
           // TODO Auto-generated method stub
    
           switch (requestCode) {
    
           case 1:
    
               if (resultCode == RESULT_OK) {
    
                  String returnData = data.getStringExtra("return_data");
    
                  Toast.makeText(FirstActivity.this, returnData, Toast.LENGTH_LONG).show();
    
                  Log.i("回传数据",returnData);
    
               }
    
               break;
    
           default:
    
           }
    
           super.onActivityResult(requestCode, resultCode, data);
    
    }

    2) 创建的第二个活动

    a)      创建一个intent对象

    c)      使用方法intent的方法putExtra(“键值”,传递的数据);来传递数

    b)      setResut(数据处理结果,intent);//数据处理结果通常是RESULT_OK和RESULT_CANCELED

    c)      销毁活动

    注意:可以自定义一个按钮在销毁活动的同时传递数据,也可以重写onBackPressed()方法

    该方法表示:当用户按下BACK按键时所进行的动作

     

  • 相关阅读:
    洛谷P1056_排座椅 贪心+桶排思想
    NOIP普及组相关
    洛谷P1464_Function 记忆化搜索
    Xcode的使用技巧
    MAC_XCODE清理
    输入框跟随键盘移动效果的实现
    #pragma的进阶用法
    iOS 逆向
    警告框
    UIImageView设置圆角的方式
  • 原文地址:https://www.cnblogs.com/tangwanzun/p/5702276.html
Copyright © 2011-2022 走看看