一.資源文件報空指針滚澜,轉換異常粗仓,但是明明寫的都是正確的,那么這個時候设捐,需要考慮下下面這種情況借浊?
1.當我們的Android程序有多個module的情況下,如果在有模塊引入別的模塊的情況萝招,主模塊的資源文件會覆蓋子模塊所有的資源蚂斤,導致子模塊獲取的資源是主模塊的資源。
2.這里的資源文件(layout,string,color,style等)但是不包含id槐沼,如果不同模塊的id相同的話曙蒸,這個是沒有問題,除了包含id的layout也相同岗钩,這樣就會用主模塊的id了纽窟。
二.我只是啟動一個應用程序,為什么Application的onCreate執(zhí)行了多次兼吓?
答:在啟動應用程序的時候臂港,linux中調(diào)用fork創(chuàng)建的子進程,將共享父進程的代碼空間视搏,復制父進程數(shù)據(jù)空間审孽,此時子進程會獲得父進程的所有變量的一份拷貝。如果這個時候第三方框架會啟動新的進程凶朗,那么也會執(zhí)行接下來的Application的代碼瓷胧,所以會執(zhí)行多次了。
三.View.setVIsibility(Gone)的時候棚愤,不起作用搓萧,或者出現(xiàn)gone的那一塊控件為黑色?
答:修改布局的設置:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/vis_or_gone"http://通過這個id來控制Visible還是Gone
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:visibility="gone">
//這里放置你要Visible和Gone的布局
</LinearLayout>
</RelativeLayout>
四.華為手機和三星手機宛畦,popupwindow中包含EditText的時候瘸洛,當EditText獲取焦點,整個popupwindow的背景都變透明次和?
答:這個需要我們在popupwindow的contentView的背景設置為想要的顏色反肋,而且contentView中包含的子控件,如果是樹頂?shù)目丶ň褪亲钌蠈语@示的控件)也需要設置我們想要的背景色踏施,這樣popwindow就不會變成透明了石蔗。
五.Tablayout + ViewPager + fragment 切換時生命周期不調(diào)用?
答:我們在寫自己的fragmentAdapter的時候罕邀,將tag和position綁定起來,比如下面的
public class BaseFragmentAdapter extends TabFragmentAdapter {
private FragmentManager mFragmentManager;
private SparseArray<String> mFragmentTags;
public BaseFragmentAdapter(@NonNull FragmentManager fm, @NonNull List<String> titles, @NonNull List<Fragment> fragments) {
super(fm, titles, fragments);
mFragmentManager = fm;
mFragmentTags = new SparseArray<>();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Object object = super.instantiateItem(container, position);
if (object instanceof Fragment) {
Fragment fragment = (Fragment) object;
String tag = fragment.getTag();
mFragmentTags.append(position, tag);
}
return object;
}
public Fragment getFragment(int position){
String tag = mFragmentTags.get(position);
if(StringUtil.isStringEmpty(tag)){
return null;
}
return mFragmentManager.findFragmentByTag(tag);
}
}
然后在vp切換的回調(diào)方法中調(diào)用:
mViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Fragment currentFragment = mTabFragmentAdapter.getFragment(position);
if ((0 == position || position == mTabFragmentAdapter.getCount() - 1) && null != currentFragment) {
currentFragment.onResume();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
上面的是調(diào)用onResume的什么周期养距,其他你們也是可以處理的诉探。
六.Android中對某個View頻繁設置Visible和Gone的時候,有的時候會出現(xiàn)Gone卻Gone不掉的情況棍厌?
答:這種情況肾胯,多半是因為View還沒有計算好自己的寬高,所以Gone不掉耘纱,我們一般可以在如下方式:
YouView.post(new Runnable() {
@Override
public void run() {
rlOptionByEmployee.setVisibility(View.GONE);
}
});
或者是在我們設置View的狀態(tài)敬肚,gone之后,再增加如下的代碼:
YouView.requestLayout();
YouView.invalide();
七.Android的Popupwindow在7.0以上的設備束析,用showAsDropDown的時候艳馒,當我們設置match_parent的時候,會全屏鋪滿畸陡?
答:可以考慮下專門為支持7.0以上的設備顯示的popupwindow鹰溜。
八.ScollView或者RecyclerView等自動滾動的處理虽填?
github地址如果你覺得有用丁恭,歡迎star,如果你們有補充的斋日,歡迎fork提交牲览,以后還會持續(xù)更新的