1. 程式人生 > >頻道管理——筆記

頻道管理——筆記

匯入頻道管理依賴

自己學習的**++筆記++**,程式碼啥的可能會有漏洞,希望有人幫助改正

  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包,就可以解決問題了。

希望大神看到後可以幫助改正其中的錯誤
膜拜