导入频道管理依赖
自己学习的**++笔记++**,代码啥的可能会有漏洞,希望有人帮助改正
-
下载依赖↓
选中自己想要的依赖—来自GitHub -
下载完成后把其中的依赖导入到自己的工作空间
-
导入工作空间后将冲突的部分进行修改
-
接下来就是代码部分的的了↓
首先在项目的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包,就可以解决问题了。
希望大神看到后可以帮助改正其中的错误
膜拜