美文网首页
实现在Activity、Fragment间传递任何数据类型

实现在Activity、Fragment间传递任何数据类型

作者: 望北8261 | 来源:发表于2017-11-01 17:54 被阅读26次

工具类

package com.audienl.superlibrary.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 描述:在Activity、Fragment等之间传递任何数据类型。
 * <p>
 * Created by audienl@qq.com on 2017/9/22.s
 */
public class IntentHelper {
    private static Map<String, Object> mIntentData = new HashMap<>();

    public static void put(String TAG, String key, Object value) {
        if (TAG == null || key == null) throw new RuntimeException("TAG 和 key 不能为null");
        mIntentData.put(generateKey(TAG, key), value);
    }

    public static Object get(String TAG, String key) {
        return get(TAG, key, null);
    }

    public static Object get(String TAG, String key, Object defaultValue) {
        String ownerKey = generateKey(TAG, key);
        if (mIntentData.containsKey(ownerKey)) {
            Object obj = mIntentData.get(ownerKey);
            mIntentData.remove(ownerKey);
            return obj;
        } else {
            return defaultValue;
        }
    }

    private static String generateKey(String TAG, String key) {
        return TAG + "_" + key;
    }
}

使用

public class IntentHelperActivity extends AppCompatActivity {
    private static final String TAG = "IntentHelperActivity";

    private User mUser;

    public static void start(Context context, User user) {
        Intent starter = new Intent(context, IntentHelperActivity.class);
        IntentHelper.put(TAG, "user", user);
        context.startActivity(starter);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intent_helper);

        mUser = (User) IntentHelper.get(TAG, "user");
    }
}

Github

https://github.com/AudienL/SuperLibrary/blob/master/super_library/src/main/java/com/audienl/superlibrary/utils/IntentHelper.java

相关文章

网友评论

      本文标题:实现在Activity、Fragment间传递任何数据类型

      本文链接:https://www.haomeiwen.com/subject/ckvgpxtx.html