> 錯誤1
1. This fragment should provide a default constructor (a public constructor wit 代碼不規范,這個錯誤是在提示你需要添加一個空的構造函數
> 錯誤2
- 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很耗時,構建太慢,真是蛋疼的問題 -