频道管理——笔记

导入频道管理依赖

自己学习的**++笔记++**,代码啥的可能会有漏洞,希望有人帮助改正

  1. 下载依赖↓
    选中自己想要的依赖—来自GitHub

  2. 下载完成后把其中的依赖导入到自己的工作空间

  3. 导入工作空间后将冲突的部分进行修改

  4. 接下来就是代码部分的的了↓

首先在项目的build下注册

allprojects {
	repositories {
		jcenter()
		//下面这句才是加上的,上面的自带 的
		maven {url "https://jitpack.io"}
	}
}

然后在app下的build中导入依赖

	compile 'com.github.andyoom:draggrid:v1.0.1'

然后在main类中就可以使用了,只要用集合将数据添加就可以了
此方法写在activity中并不可以写在Fragment中
根据老师的讲解是因为有一个拦截机制,并不能通过启动activity达到传值的作用,必须用Fragment 的传值方法

	按钮.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (list == null) {
                    list = new ArrayList<>();
                    //第一个是显示的条目,第二个参数是否显示
                    //比如
                    list.add(new ChannelBean("热点", true));
                    list.add(new ChannelBean("色昂", false));
                    ChannelActivity.startChannelActivity(MainActivity.this,list);
                }else if(jsonStr !=null){
                    ChannelActivity.startChannelActivity(MainActivity.this,jsonStr);
                }
            }
        });

写Fragment中的

全局的 → ArrayList<ChannelBean> pin;
全局的 → String jsonStr;

jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(pin == null){
                    pin = new ArrayList<>();

                    pin.add(new ChannelBean("热点", true));
                    pin.add(new ChannelBean("色昂", false));
                    //ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),pin);
                    Gson gson = new Gson();
                    String jsonArray = gson.toJson(pin);
                    Intent intent = new Intent(getActivity(), ChannelActivity.class);
                    intent.putExtra(RESULT_JSON_KEY, jsonArray);
                    startActivityForResult(intent, REQUEST_CODE);
                }else if(jsonStr !=null){
                    //ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),jsonStr);
                    Intent intent = new Intent(getActivity(), ChannelActivity.class);
                    intent.putExtra(RESULT_JSON_KEY, jsonStr);
                    startActivityForResult(intent, REQUEST_CODE);
                }
            }
        });

然后再回调一下(必须的,不然不可以第二次点击)(回调一样的)

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==ChannelActivity.REQUEST_CODE&&resultCode==ChannelActivity.RESULT_CODE){
            jsonStr = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
        }
    }

·········Bug呈现和解决·············
如果run之前程序报错如:Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’.
即依赖冲突,根据报错的详细信息查找冲突的类。
例如:
报错:Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’.> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/gson/annotations
这时候我们可以发现
com/google/gson/annotations/Expose.class
最后面有一个Expose.class
我们可以通过Search Everywhere去定位这个类(默认快捷键是双击shift)。

全局搜索相同类
看,通过搜索的确发现了两个一模一样的类,而且来自不同的依赖,而重复的类库正是gson。
然后我们只要删除一个架包或者依赖就可以了,最好是删除外面的单独架包,比如我们自己导入的Gson包,就可以解决问题了。

希望大神看到后可以帮助改正其中的错误
膜拜

猜你喜欢

转载自blog.csdn.net/L_1145418863/article/details/83340416
今日推荐