安卓初級開發中遇到的一些問題

一、出現的問題:就是無法使用getDrawable()來獲得Drawable對象
Drawable drawable=circleImageView.getDrawable();
首先要要獲取的圖片是否在佈局文件中:
/*此處注意了 ,因爲是在另外的一個佈局文件中的circleView所以需要首先得到該佈局文件
* */
LinearLayout layout=(LinearLayout)getLayoutInflater().inflate(R.layout.circle_head,null);
CircleImageView circleImageView=(CircleImageView)layout. findViewById(R.id.circle_headd);

Drawable drawable=circleImageView.getDrawable();

我的佈局文件不是在Main_activity中,而是在另外的一個circle_head佈局文件中;所以需要先獲取該佈局文件,在從該佈局文件findviewById().就可以了。
二、如何TextInputLayout在xml文件中設置hint的時候,沒有顯示的話;可以使用Java代碼來調用setHint()設置。

三、FloatingActionButton不能放在Linerlayout內部,必須要放在CoordinatorLayout裏面,;有時候可能遇到的就是自己明明設置了FAB在最低端,爲什麼FAB有一部分無法顯示呢?其實要設置Toolbar不要讓他移動即可,也就是不要設置app:layout_scrollFlags="scroll|enterAlways"就行,不要妄想着刪除AppBarLayout來達到上述的目的。

四、爲什麼Tab不能充滿整個屏幕?
第一檢查你的TabLayout的寬度是不是設置成match_parent;
第二查看你的TabLayout的模式MODE是不是設置成了TabLayout.MODE_FILLED

四、當程序中需要連接網絡處理數據的時候,必須開啓一個新線程來處理聯網操作;其次當通過聯網來改變APP界面的時候,必須要使用Handler來處理動態更新界面的問題;

五、要使Toolbar左邊的按鍵可行的話,必須要首先setSupportActionBar(toolbar);,再然後得到ActionBar來改變其Title和subtitle,以及顏色等等;要使左邊指向按鈕可用的話,首先必須要讓其可見,然後再讓其能用,可見:getSupportActionBar().setDisplayHomeAsUpEnabled(true);
能用:actionBar.setHomeButtonEnabled(true);
最後在 @Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}

@Override
public booleanonOptionsItemSelected(MenuItem item) {
if (item.getItemId()==android.R.id.home)
{
finish();
}
return super.onOptionsItemSelected(item);
}
}


六、要是使用了子線程來處理數據,但是某些數據又需要在主線程顯示出來,此時必須要使用Handler來處理數據。

七、在android6.0之前要使用DatePicker的話,那麼必須要將其時間實現設定要還有就是要將其datePickerMode="calender",如果是android6.0以上的則可以默認使用;其次在timePicker中android5.0之前要實現時間選擇器的話,那麼要將timepickerMode="spinner"纔可以進行時間的選擇;要是再安卓6.0以上可以直接使用

八、爲什麼NavigationView中的header中的組件不可以點擊?


解決的方法是:
1:首先獲取navigationview的佈局:
navigationView=(NavigationView)findViewById(R.id.navigationView);
2:通過navigationview的佈局得到header的佈局
View headerview= navigationView.getHeaderView(0);

3:獲取CircleImageView組件,並設計點擊事件:
myheader = (CircleImageView) headerview.findViewById(R.id.main_header_pic);
myheader.setClickable(true);
myheader.setOnClickListener(new View.OnClickListener()

記住簽完不能直接通過獲取自己header的組件來直接設置點擊事件
也就是說這樣做是錯的:
layout = (LinearLayout) getLayoutInflater().inflate(R.layout.layout_header, null);
myheader = (CircleImageView) layout.findViewById(R.id.main_header_pic);
myheader.setClickable(true);
myheader.setOnClickListener(new View.OnClickListener() {

九、在進行開發的時候,當設計到使用三個以上的fragment的時候,當你滑動fragment的時候,會將這些fragment緩存在內存中,要是你的某一個fragment是設置了一個定時器的話,或者是你想要某個frament想要顯示一些動態的內容的話,那麼就必須要將fragment在內存中只能保存2個或者一個。這樣纔不會至於你點擊了第三個fragment的時候再點擊第二個fragment的時候第一個fragment崩潰(假設第一個frament是用來動態顯示內容的)

十、在安卓6.0中可能因爲權限的問題無法創建目錄,我們可以在grade文件中,將他的targetSdk設置在23之前
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章