zoukankan      html  css  js  c++  java
  • 安卓 日常问题 工作日志16

    android 中activity中常见的 传递信息的方法 

    startActivityForResult的简单使用总结

    1.(1)startActivityForResult(Intent intent, int requestCode);

    (2)onActivityResult(int requestCode, int resultCode, Intent data)

    (3)setResult(int resultCode, Intent data)

    这里 时 (1)发送数据 将数据从activity1传递给 activity2  然后 activity2 通过 (3)将 activity的数据数据传递给activity1 然后 activity1中 使用 (2)去接受 activity传过来的数据 

    有点三次握手的感觉 

    代码示例 拍照 代码 

    (1)Intent intentMap=new Intent(getActivity(), CameraLandFormActivity.class); //数据要传送到的位置
    intentMap.putExtra(CameraLandFormActivity.LAND_FROM_ID, landFromIdFragment);//场景id 这里表内为scene_id 这里我们把点id传过去
    intentMap.putExtra(CameraLandFormActivity.PROJECT_NAME_ID, projectNameFragment); //当前项目名
    intentMap.putExtra(CameraLandFormActivity.LOCATION_MAP, location_map); //当前照片类型id 在initView()中 将它变为watersample + "." + id格式
    startActivityForResult(intentMap,TAKE_PHOTO); //换了这借用inttent去传值
    然后
    CameraLandFormActivity通过如下代码获得数据 
    long landFromId = getIntent().getLongExtra(LAND_FROM_ID, -1L); // 这里开始接受 mainactivity 传来的地质点id
    projectName = getIntent().getStringExtra(PROJECT_NAME_ID); //获取传过来的项目名称 这个 必须得有 以后再写 目前 先做别的
    imagetype_id=getIntent().getStringExtra(IMAGE_TYPE_ID);//获取传过来的imagetype_id
    location_map=getIntent().getStringExtra(LOCATION_MAP);//获取传过来的平面图id
    然后通过(3) 返回数据 
    Intent data = new Intent();
    data.putExtra(LAND_FROM_ID, image.getMScenePointId().longValue()); //将地质点id返回到主页面里
    data.putExtra(IMG_ID, image.getId().longValue());//将照片id返回
    data.putExtra(IMAGE_TYPE_ID, image.getImage_type());//将照片类型id返回 可以是平面图 也可以是照片
    data.putExtra(PROJECT_NAME_ID,projectName);//将项目名称返回 表中无项目名 利用id就行 需要项目名称 实景里面可以 这里 不可以 会出现问题
    setResult(RESULT_OK, data); //这里是将图片id 和实景id 返回 之前 应该是 mainactivity 返回后 进行判断 onActivityResult()方法里有

    然后 activity1 通过 (2)去接受
    public void onActivityResult(int requestCode, int resultCode, Intent data){
    // Toast.makeText(getActivity(), "返回照片成功", Toast.LENGTH_LONG).show();
    if (resultCode == RESULT_OK && requestCode == TAKE_PHOTO) { //为新的场景点拍照的返回函数 这里 是 (1参数是返回码 2 参数是请求码)
    long id = data.getLongExtra(CameraLandFormActivity.LAND_FROM_ID, -1L); //并且有senceid 返回 则实现showScene方法
    String imageTypeId = data.getStringExtra(CameraLandFormActivity.IMAGE_TYPE_ID);//照片类型
    String projectName = data.getStringExtra(CameraLandFormActivity.PROJECT_NAME_ID);//必须查找到项目名
    long imgid = data.getLongExtra(CameraLandFormActivity.IMG_ID, -1L); //并且有senceid 返回 则实现showScene方法
    }
    }

    第二种

    startActivity(intent);

    显式启动新的Activity 

    Intent intent=new Intent(getActivity(), ShowImageActivity.class);// 查看单张照片
    intent.setData(uris.get(position));
    intent.putExtra(ShowImageActivity.AZIMUTH_TAG, form.getLandformsImages().get(position).getAzimuth());
    startActivity(intent);
    这里是传递数据 但是 不要求 返回只是单纯的去传递数据 并启动新的activity


    顺便这里我们学习一下 显式和隐式的intent
    https://www.cnblogs.com/liaojie970/p/5827433.html 参考文档
    https://www.cnblogs.com/shuiyin/p/6550999.html
  • 相关阅读:
    Oracle8i安装问题
    c# 值類型與引用類型
    C# String轉成FontStyle
    为GridView“删除”列添加确认对话框(轉)
    c# 輸出字符編碼
    了解C#命名空間
    Asp.Net安全控件說明
    C# 数组学习
    c# 方法的參數傳遞機制
    c# 得到所有XmlElement節點的值
  • 原文地址:https://www.cnblogs.com/dushutai/p/12653282.html
Copyright © 2011-2022 走看看