Android Studio使用過程中遇到的錯誤


> 錯誤1


 1. This fragment should provide a default constructor (a public constructor wit 代碼不規范,這個錯誤是在提示你需要添加一個空的構造函數

> 錯誤2

  1. Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead(Error when building APK in android studio打包時報錯)
    這個錯誤說要使用默認構造函數外加setArguments(Bundle)來代替,去android的官網上查看Fragment的例子都是下面這個樣子的
CharSequence mLabel;  
      /** * Create a new instance of MyFragment that will be initialized * with the given arguments. */  
    static MyFragment newInstance(CharSequence label) {  
        MyFragment f = new MyFragment();  
        Bundle b = new Bundle();  
        b.putCharSequence("label", label);  
        f.setArguments(b);  
        return f;  
    }

既然人家這么寫例子肯定還是有道理的,我們只需要依葫蘆畫瓢就可以了,去掉帶參的構造函數,創建一個newInstanc

public class TestFragment extends Fragment {  
    private String name;  
    private String passwd;  
    public static TestFragment newInstance(String name, string passwd) {  
        TestFragment newFragment = new TestFragment();  
        Bundle bundle = new Bundle();  
        bundle.putString("name", name);  
        bundle.putString("passwd", passwd);  
        newFragment.setArguments(bundle);  
        return newFragment;    
    }  
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {  
        // TODO Auto-generated method stub 
        View view = inflater.inflate(R.layout.main, null);            
        return view;  
    } 
  } 

,這個錯誤就消失了,在Fragment所依賴的Activity中,用以下語句創建Fragment實例即可

Fragment testFragment=TestFragment.newInstance(“name”,”passwd”);

//對於從Activity傳遞到Fragment中的參數我們只需要在Fragment的onCreate中獲取就可以了

public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);    
        Bundle args = getArguments();  
        if (args != null) {  
            name = args.getString("name");  
        passwd = args.getstring("passwd");  
        }  
}

> 錯誤3

android studio 對於自定義控件的屬性不識別
通常我們會這樣寫:xmlns:app=”http://schemas.android.com/apk/res/包路徑”
當遇到錯誤時候,可能是當前工程是座位lib使用了,或者在AS中使用不識別,此時只需要將它改為:xmlns:app=”http://schemas.android.com/apk/res-auto”即可

>導入項目的問題4

一般AS導入工程,需要構建工具gradle的支持,gradle版本的不統一給我們開發者帶來了巨大的煩惱,尤其國內的牆很高,很難下載下全gradle的配置,當你能成功新建一個as工程時候,你的as中gradle就有了一個版本,這時候你需要看清是哪個版本,我這里是1.2.3的,導入工程后module不顯示是很正常的問題,你需要看清提示,一般情況下:

  • 1.gradle版本不一樣
    1.gradle版本不一樣,需要你手動更改gradle.build文件內容為你的版本(新建一個工程對比下),gradle.build有2個,一個是全局的,一個是你的module的,都需要更改,另外在module外還有一個gradle文件夾,里面的第二個文件的最后一行也需要更改,我的是2.1.2-all.zip,假如你引進的gradle版本比1.1還低,估計會提示android()不識別,這時候需要你刪除gradle.build文件的這個方法,或者多余的方法,gradle版本的不一導致里面構建代碼也不一,對比你的新建工程,然后合理的刪除gradle.build代碼塊,最后rebuild工程,這時你會發現module出現了。

  • 2.project的sdk沒有指定api版本
    2.project的sdk沒有指定api版本,需要你在設置中配置一下,file->project Stucture ->選中你的module進行配置,另外project Stucture中能配置本工程大多數的配置,包括jar包、依賴庫、等等

  • 3.android studio可以直接導入eclispe工程
    3.android studio可以直接導入eclispe工程,需要選擇import project(Eclipse Adt,Gradle,etc) ,使用gradle構建工具構建即可完成

  • 4.依賴庫的版本需要與你sdk依賴庫版本統一
    4.依賴庫的版本需要與你sdk依賴庫版本統一,我的是22.1.1,打開sdk,查看extra中support library的版本號,即可知道你的版本號

dependencies { compile 'com.android.support:appcompat-v7:22.1.1' compile project (':library') }
  • 5.setting.gradle
    5.setting.gradle 中 配置的是你的庫library以及你的工程module。
include ':myapp', ':library', ':mylibrary'
  • 6.AS很耗時,構建太慢,真是蛋疼的問題
  • -


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM