欢迎光临散文网 会员登陆 & 注册

android studio常用数据传输

2023-06-13 15:29 作者:翼618  | 我要投稿

全局变量

//AppContext  是工程入口类  也就是新建个变量 添加对应的设置获取方法而已

public class AppContext extends Application {

    /**

     * 全局变量 调用方法

     * AppContext appState = ((AppContext)getApplicationContext());

     * String state = appState.getState();

     * appState.setState("88888888888888");

     */

    private String myState;

    public String getState(){

        return myState;

    }

    public void setState(String s){

        myState = s;

      }


    @Override

    public void onCreate() {

        super.onCreate();

    }

}

-------------------------------分割线-------------------------------------

Activity 跳转传值

Intent intent=new Intent(MainActivity.this,Activity2.class);

intent.putExtra("data1", "这里塞你要传递的值" );

intent.putExtra("data2", "这里塞你要传递的值" );//你可以多传几个 类型也有很多

startActivity(intent);


接收方 activity 写法 

String data=getIntent().getStringExtra("data1");

String data=getIntent().getStringExtra("data2");


-------------------------------分割线-------------------------------------

Activity 跳转传输list    

序列化里面的所有类 都要  implements Serializable  内部的也要写上


//例 这里是用到的bean

    public static class SchedulingDataBean implements Serializable {

        private String ProjectID;

        private List<ScheduleEveryDayListBean> ScheduleEveryDayList;


        public String getProjectID() {

            return ProjectID;

        }


        public void setProjectID(String ProjectID) {

            this.ProjectID = ProjectID;

        }


        public List<ScheduleEveryDayListBean> getScheduleEveryDayList() {

            return ScheduleEveryDayList;

        }


        public void setScheduleEveryDayList(List<ScheduleEveryDayListBean> ScheduleEveryDayList) {

            this.ScheduleEveryDayList = ScheduleEveryDayList;

        }


        public static class ScheduleEveryDayListBean implements Serializable {


            private String Is_Can_Edit="";


            public String getIs_Can_Edit() {

                return Is_Can_Edit;

            }

            public void setIs_Can_Edit(String is_Can_Edit) {

                Is_Can_Edit = is_Can_Edit;

            }


        }

    }




传递方

SchedulingDataBean bean = new SchedulingDataBean();

List<SchedulingDataBean.ScheduleEveryDayListBean> listBeans = new ArrayList<>();

SchedulingDataBean.ScheduleEveryDayListBean scBean = new SchedulingDataBean.ScheduleEveryDayListBean();

bean.setProjectID("需要传的内容");

scBean.setIs_Can_Edit("子类需要传递的东西");

listBeans.add(scBean);

bean.setScheduleEveryDayList(listBeans);



Intent intent = new Intent(DataInsidePagesActivity.this, ComplaintActivity.class);

intent.putExtra("SchedulingDataBeanList", (Serializable) bean);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);



接受方

String data = getIntent().getSerializableExtra("SchedulingDataBeanList");


DataInsidePagesBean  schedulingDataBean = gson.fromJson(data, SchedulingDataBean.class);//转一下 




-------------------------------分割线-------------------------------------

轻量级存储  就是把数据保存在系统里面  但是APP被卸载了 这些数据也就没有了,就算普通的数据缓存把,不过手机重启还是有的

SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE);

SharedPreferences.Editor editor = preferences.edit();

editor.putString("dataString", data);

editor.commit();


读取

String name = preferences.getString("dataString", "没有内容");// 第二个参数是 没有数据的时候返回的内容

-------------------------------分割线-------------------------------------


存储数组

就是把数据转成String 来存 取出来的时候 转一下就好


List<String> StringData = new ArrayList<>();

for (int i = 0; i < 50; i++) {

    StringData.add(i + "");

}

String data = JsonUtil.toJson(StringData);

SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE);

SharedPreferences.Editor editor = preferences.edit();

editor.putString("dataList", data);

editor.commit();


读取数组

String name = preferences.getString("dataList", "没有内容");// 第二个参数是 没有数据的时候返回的内容

-------------------------------分割线-------------------------------------


图片缓存  这个比较特殊 


//图片存储

    private void saveBitmapToSharedPreferences(Bitmap bitmap){

//        Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

        //第一步:将Bitmap压缩至字节数组输出流ByteArrayOutputStream

        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();

        bitmap.compress(Bitmap.CompressFormat.PNG, 80, byteArrayOutputStream);

        //第二步:利用Base64将字节数组输出流中的数据转换成字符串String

        byte[] byteArray=byteArrayOutputStream.toByteArray();

        String imageString=new String(Base64.encodeToString(byteArray, Base64.DEFAULT));

        //第三步:将String保持至SharedPreferences

        SharedPreferences sharedPreferences=getSharedPreferences("testSP", Context.MODE_PRIVATE);

        SharedPreferences.Editor editor=sharedPreferences.edit();

        editor.putString("image", imageString);

        editor.commit();

    }


//    拿 图片缓存

   private Bitmap getBitmapFromSharedPreferences(){

        SharedPreferences sharedPreferences= getSharedPreferences("testSP", Context.MODE_PRIVATE);

        //第一步:取出字符串形式的Bitmap

        String imageString=sharedPreferences.getString("image", "");

        //第二步:利用Base64将字符串转换为ByteArrayInputStream

        byte[] byteArray=Base64.decode(imageString, Base64.DEFAULT);

        ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArray);

        //第三步:利用ByteArrayInputStream生成Bitmap

        Bitmap bitmap=BitmapFactory.decodeStream(byteArrayInputStream);


        if (bitmap == null) { // 设置拿不到的一个替代图 这玩意容易报错

         bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.portrait);

             }

        return bitmap ;

    }



-------------------------------分割线-------------------------------------

附带一个 工具类吧 

导包      compile 'com.google.code.gson:gson:2.7' 

public class JsonUtil {


    private static Gson gson = null;

    static {

        GsonBuilder builder = new GsonBuilder();

        builder.registerTypeAdapter(JsonObject.class, new JsonDeserializer<Object>() {


            @Override

            public Object deserialize(JsonElement jsonElement, Type type,

                    JsonDeserializationContext jsonDeserializationContext)

                    throws JsonParseException {

                JsonObject jsonObject = jsonElement.getAsJsonObject();

                return jsonObject;

            }

        });

        

        gson = builder.disableHtmlEscaping().create();

    }


    public static String toJson(Object object) {

        if (object == null) {

            return null;

        }

        return gson.toJson(object);

    }


    public static <T> T fromJson(String content, Class<T> clazz) {

        if (StringUtil.isEmpty(content) || clazz == null) {

            return null;

        }

        try {

            return gson.fromJson(content, clazz);

        } catch (JsonSyntaxException e) {

            e.printStackTrace();

            return null;

        }

    }


    public static <T> T fromJson(String content, TypeToken<T> token) {

        if (StringUtil.isEmpty(content) || token == null) {

            return null;

        }

        try {

            return gson.fromJson(content, token.getType());

        } catch (JsonSyntaxException e) {

            return null;

        }

    }

    

    /**

     * 把json转成对应的类型。适合用于自定义数据类型,如ArrayList<Foo>等

     * @param content json

     * @param type 自定义类型的token。使用方法如下

     *              Type listType = new TypeToken<ArrayList<Foo>>(){}.getType();

     * @param <T>

     * @return 对应类型的对象

     */

    public static <T>T fromJson(String content , Type type){

        if(!StringUtil.isEmpty(content) && type != null){

            try {

                return gson.fromJson(content,type);

            } catch (JsonSyntaxException e) {

                e.printStackTrace();

            }

        }

        return null;

    }


    public static Map<String, Object> toMap(Object obj) {

        JsonElement element = gson.toJsonTree(obj);

        return gson.fromJson(element, Map.class);

    }


    public static <T> T fromObject(Object obj, Class<T> clazz) {

        JsonElement element = gson.toJsonTree(obj);

        return gson.fromJson(element, clazz);

    }


    public static <T> T fromObject(Object obj, TypeToken<T> token) {

        JsonElement element = gson.toJsonTree(obj);

        return gson.fromJson(element, token.getType());

    }


    public static Map<String, Object> getMap(Map<String, Object> map, String key) {

        if (map == null || key == null) {

            return null;

        }

        Object value = map.get(key);

        if (value instanceof Map) {

            return (Map) value;

        }

        return null;

    }


    public static Long getLong(Map<String, Object> map, String key) {

        if (map == null || key == null) {

            return null;

        }

        Object value = map.get(key);

        if (value == null) {

            return null;

        }

        if (value instanceof Number) {

            return ((Number) value).longValue();

        }

        try {

            return Long.parseLong(value.toString());

        } catch (NumberFormatException e) {

            return null;

        }

    }


    public static List<Long> getLongList(Map<String, Object> map, String key) {

        if (map == null || key == null) {

            return Collections.EMPTY_LIST;

        }

        Object value = map.get(key);

        if (value == null) {

            return Collections.EMPTY_LIST;

        }

        if (value instanceof List) {

            List<Object> list = (List) value;

            List<Long> longValues = new ArrayList<Long>();

            for (Object i : list) {

                if (i instanceof Number) {

                    longValues.add(((Number) i).longValue());

                }

            }

            return longValues;

        }

        return Collections.EMPTY_LIST;

    }


    /**

     * 从json中搜索,根据键的名字,返回值。

     * @param json

     * @param name json中的键名

     * @return Object

     */

    public static Object findObject(String json , String name){


        Object object = null;


        if(StringUtil.isEmpty(json) || StringUtil.isEmpty(name)){

            return null;

        }


        try {

            JSONObject jsonobject = new JSONObject(json);

            if(!jsonobject.has(name)){

                return null;

            } else {

                object = jsonobject.get(name);

            }

        } catch (JSONException e) {

            e.printStackTrace();

        }


        return object;

    }

}


android studio常用数据传输的评论 (共 条)

分享到微博请遵守国家法律