頻道管理——筆記
匯入頻道管理依賴
自己學習的**++筆記++**,程式碼啥的可能會有漏洞,希望有人幫助改正
-
下載依賴↓
選中自己想要的依賴—來自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包,就可以解決問題了。
希望大神看到後可以幫助改正其中的錯誤
膜拜