1. 程式人生 > >android 開發中遇到的問題彙總

android 開發中遇到的問題彙總

1.Edittext輸入為密碼有兩種方法,分別是:
Android:inputType="textPassword"
android:password="true"
2.Android中gravity與layout_gravity的區別
LinearLayout有兩個非常相似的屬性:android:gravity與android:layout_gravity。他們的區別在於:android:gravity用於設定View元件的對齊方式,而android:layout_gravity用於設定Container元件的對齊方式。
舉個例子,我們可以通過設定android:gravity="center"來讓EditText中的文字在EditText元件中居中顯示;同時我們設定EditText的android:layout_gravity="right"來讓EditText元件在LinearLayout中居中顯示
3. android 2.2版使用getFromLocation不能解析地址(錯誤:Service not Available);
4.部分真機getFromLocation()/getFromLocationName()返回0個解析值。
這是因為該真機版本不支援backend servic;下面是google原話
[xhtml] view plaincopyprint?
The Geocoder class requires a backend service that is not included in the core android framework. The Geocoder query methods will return an empty list if there no backend service in the platform. Use the isPresent() method to determine whether a Geocoder implementation exists. 
5.旋轉動畫(旋轉後停在旋轉後的位置)
RotateAnimation rotateAnimation = new RotateAnimation(from, to,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,  0.5f);
rotateAnimation.setInterpolator(new LinearInterpolator());
rotateAnimation.setDuration(ANIMATION_DURATION);
rotateAnimation.setFillAfter(true);


imageView.startAnimation(rotateAnimation);


1.android自定義日期時間對話方塊,在手工輸入日期數字後,點選儲存獲取日期對話方塊的值,發現所獲取的值是我們輸入前的那個值。
解決辦法:在獲取事件中,獲取日期之前,執行下日期對話方塊物件的clearFocus()即可。如:datePicker.clearFocus();
2.在HorizontalScrollView中,雖然我已經設了其子節點內容的寬度是fill_parent。但當內容較少時,其子節點還是根據內容自適應寬度,不能滿屏。出現右邊一塊空白。
 解決辦法:設定HorizontalScrollView的android:fillViewport="true"。也就是設定是否將HorizontalScrollView的內容寬度拉伸以適應視口(viewport)
3.模擬器模擬sdcard插入或者拔出
先執行adb shell,進入模擬器的終端,然後輸入sdutil mount /sdcard  或者 sdutil unmount /sdcard 
4.使用webview,在用JS調java方法時,2.3.3和2.2.2版會使應用程式直接崩潰,據網上說是android這兩個版本本省的bug,但是我發現一個解決方案:
在需要用js呼叫Java,我們可以通過console.log("你要傳的值");
在java端,先宣告一個WebChromeClient,複寫回撥函式onConsoleMessage(String message, int lineNumber, String sourceID),其中message就是你傳過來的值。這樣你就可以該幹嘛幹嘛,想幹嘛幹嘛。
測試2.1以上的版本都通過。
5.android xml 字串中的空格:  (代表空格)
6.點選LinearLayout使用selector改變TextView字型顏色
在父控制元件中新增android:clickable=“true” android:focusable=“true”,而在子控制元件中新增android:duplicateParentState=“true”子控制元件就能獲得父控制元件的點選事件
7.怎麼在release版下不輸出日誌?
方法一:如果有做程式碼混淆,在配置檔案中加入下面語句
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    public static *** i(...);
}
方法二:對於沒做程式碼混淆的,可以按照下面方法:
在manifest檔案中加入android:debuggable="@bool/build_log"
<application
    android:name="MyApplication"
    android:icon="@drawable/gift"
    android:label="@string/app_name" android:debuggable="@bool/build_log">
定義一個日誌類
public class Lol {


    public static final boolean ENABLE_LOG = true & MyApplication.sDebug;


    private static final boolean DEBUG = true & ENABLE_LOG;


    private static final boolean VERBOSE = true & ENABLE_LOG;


    private static final boolean TEMP = true & ENABLE_LOG;


    private static final boolean WARNING = true & ENABLE_LOG;


    private static final boolean INFO = true & ENABLE_LOG;


    private static final boolean ERROR = true & ENABLE_LOG;


    public static void obvious(String tag, String msg) {
        if (DEBUG) {
            msg = "*********************************\n" + msg
                    + "\n*********************************";
            Log.d(tag, msg);
        }
    }


    public static void d(String tag, String msg) {
        if (DEBUG)
            Log.d(tag, msg);
    }


    public static void d(boolean bool, String tag, String msg) {
        if (TEMP&bool)
            Log.d(tag, msg);
    }


    public static void i(String tag, String msg) {
        if (INFO)
            Log.i(tag, msg);
    }


    public static void e(String tag, String msg) {
        if (ERROR)
            Log.e(tag, msg);
    }


    public static void e(boolean bool, String tag, String msg) {
        if (TEMP&bool)
            Log.e(tag, msg);
    }


    public static void v(String tag, String msg) {
        if (VERBOSE)
            Log.v(tag, msg);
    }


    public static void w(String tag, String msg) {
        if (WARNING)
            Log.w(tag, msg);
    }


    public static String getStackTraceString(Exception e) {
        return Log.getStackTraceString(e);
    }


    public static void w(String tag, String msg, Exception e) {
        if (WARNING)
            Log.w(tag, msg,e);
    }
}
8.android使用include標籤出現nullpointer異常
在使用inlcude時,在inluce在include便籤中不能帶ID,如果帶了ID需要用inflate載入要被inlude的這個佈局檔案,然後再獲取這個佈局檔案上的物件。
我在使用的過程中發現,include標籤如果帶了ID,那麼他包含的佈局檔案的根節點就不要包含ID,否則出現nullpointer異常。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="bottom"
    android:orientation="vertical" > 
    <!-- 動態顯示介面 -->


    <LinearLayout
        android:id="@+id/body"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:orientation="vertical" >
    </LinearLayout>
    <!-- 底部功能選單欄 -->


    <include
        layout="@layout/tab_menu_view" />


</LinearLayout>


tab_menu_view.xml
<?xml version="1.0" encoding="UTF-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/radiogroupMenu"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >


    <RadioButton
        android:id="@+id/radiobtnHome"
        style="@style/main_tab_bottom"
        android:checked="true"
        android:drawableTop="@drawable/menu_home"
        android:gravity="center"
        android:text="定位" />


    <RadioButton
        android:id="@+id/radiobtnTrack"
        style="@style/main_tab_bottom"
        android:drawableTop="@drawable/menu_tracker"
        android:gravity="center"
        android:text="追蹤" />


    <RadioButton
        android:id="@+id/radiobtnHelp"
        style="@style/main_tab_bottom"
        android:drawableTop="@drawable/menu_help"
        android:gravity="center"
        android:text="求助" />


    <RadioButton
        android:id="@+id/radiobtnSecurity"
        style="@style/main_tab_bottom"
        android:drawableTop="@drawable/menu_mobilesafe"
        android:gravity="center"
        android:text="防盜" />


    <RadioButton
        android:id="@+id/radiobtnMore"
        style="@style/main_tab_bottom"
        android:drawableTop="@drawable/menu_more"
        android:gravity="center"
        android:text="更多" />


</RadioGroup>


8.ScrollView中的元件設定android:layout_height="fill_parent"不起作用的解決辦法
在ScrollView中新增一個android:fillViewport="true"屬性就可以了。顧名思義,這個屬性允許ScrollView中的元件去充滿它。
9.動態新增子view的時候,子view的設定了背景但是卻沒有填充整個子view.解決辦法:
在新增時候,設定新增的子view的填充方式
LinearLayout.LayoutParams params =new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
mBodyView.addView(getLocalActivityManager().startActivity(target, intent).getDecorView(),params);
10.自己寫的應用總是導致launcher重啟。原因是在設定全域性面板的時候加了<item name="android:windowIsTranslucent">true</item>。
然後再將對應的activity設定為橫屏或者豎屏,再加上android:configChanges="keyboardHidden|orientation",讓橫豎屏轉換時不執行oncreate即可。


11.獲取當前裝置的畫素,密度
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 螢幕寬度(畫素)
int height = metric.heightPixels; // 螢幕高度(畫素)
float density = metric.density; // 螢幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 螢幕密度DPI(120 / 160 / 240)
Log.i(tag, width + "," + height + "," + density + "," + densityDpi);




12.當listview的item上面有checkbox控制元件時,你設定listview的item點選時更換背景不起作用。
解決辦法:設定checkbox的 android:clickable="false"
        android:focusable="false"


13.android EditText設定輸入負小數:android:inputType="numberDecimal|numberSigned".

相關推薦

android開發遇到的問題彙總【十】

294. java中 volatile static結合使用 static 靜態 volatile 不穩定的 JAVA 裡static 和volatile的區別 變數放在主存區上,使用該變數的每個執行緒,都將從主存區拷貝一份到自己的工作區上進行操作。 v

Android開發所遇到的BUG彙總(持續更新)

The following classes could not be instantiated: - android.support.v7.internal.app.WindowDecorActionBar (Open Class, Show Exceptio

Android開發遇到的各類問題彙總

Q1: Error:The number of method references in a .dex file cannot exceed 64K. Learn how to resolve t

android開發遇到的問題彙總【九】

244.http請求的url含有中字元時,需要Uri編碼。Uri.encoder() 245.使用androidstudio時,不知道什麼原因svn不見了 Please make sure that the “SubversionIntegratio

android 開發遇到的問題彙總

1.Edittext輸入為密碼有兩種方法,分別是: Android:inputType="textPassword" android:password="true" 2.Android中gravity與layout_gravity的區別 LinearLayout有兩個非常相

[CloudReader] Android 開發問題歸納(持續更新)

本文來自我的部落格:http://jingbin.me ,是開發開源專案雲閱時遇到的問題總結。最新的更新在部落格裡,慢慢再逐步更新到CSDN。 如對您有幫助,請幫忙Star一下吧~

android開發遇到的問題彙總【四】

92. Looks like there is no way to avoid modifications made by the import plugin. All the settings it has is three checkboxes relat

Android開發有用工具之--Log工具類

util lena 日誌 日誌信息 stat 們的 常常 我們 imp 在開發的過程中。我們常常會使用Log來輸出日誌,幫助我們來調試程序 可是有時候並不能全然滿足我們的須要 ,比方我想知道這個日誌信息是來自於哪一個包 哪一個類 所以我們封裝一個這個Log類。方便我們的

Android學習探索之Java 8 在Android 開發的應用

相關 概念 容易 並不是 min etc bstr trac flavor 前言: Java 8推出已經將近2年多了,引入很多革命性變化,加入了函數式編程的特征,使基於行為的編程成為可能,同時減化了各種設計模式的實現方式,是Java有史以來最重要的更新。但是Androi

android開發如何使用JavaMail程序

有一個 pro 會話 jpg names prot get ext 會有  javaMail,是提供給開發者處理電子郵件相關的編程接口。它是Sun發布的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。我們可以基於JavaMail開發出類似於Microsoft

Android開發的各種尺度單位

href roi 放大 pla blank 區別 csdn tro 自定義 px 像素(pixel),表示屏幕上一個物理像素點 不建議直接使用 px 繪制UI,因為受像素密度的影響,以 px 為單位繪制的UI在不同手機上顯示的實際大小會不同 dp (用於定義控件

android開發——Android開發的47個小知識

環境 底部 枚舉 目前 mount ram 啟動 creat ica 1、判斷sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environm

Android開發幾種有用的的日歷控件實現

顯示 lec 外觀 翻頁 frame 時間 lean android平臺 星期 我們大家都知道,在Android平臺3.0中才新增了日歷視圖控件,可以顯示網格狀的日歷內容,那麽對於3.0以下的版本要使用日歷控件只能借助第三方,目前用的最多的是CalendarView。 先簡

Android開發java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}

net 控件 view etc spi pos rst ack data Android開發中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullP

Android開發dp,sp和px之間的轉換

font col art gpo ati pan ext 同時 style 本文轉載於 http://blog.csdn.net/student9128/article/details/53932470 眾所周知,在Android開發中dp和px,sp和px之間的轉換時必不

Android開發怎樣用多進程、用多進程的好處、多進程的缺陷、解決方法(轉)

傳遞 標簽 事情 打印 ide 即時通訊 ice cati 一個數 轉自:http://blog.csdn.net/spencer_hale/article/details/54968092 1.怎樣用多進程 Android多進程概念:一般情況下,一個應用程序就是一個進

Android開發XRecyclerview用法及遇到的一些問題

解決 pos sage head ebe 專業 剛才 adapt 只需要 目前通過xrecyclerview的開源代碼來實現系列功能,加載數據傳入type,值為1,2,3,分別表示初次加載,下拉刷新數據,上拉加載更多數據操作,刷新數據只需要重新放入數據,然後notifyDa

Android開發ScollView嵌套 WebView底部高度無法自適應解決

hbase get ride web algorithm 接口 試驗 splay 網頁加載 最近要做一個頁面,需要 ScrollView 嵌套 WebView,怎麽嵌套,怎麽解決焦點和 touch 事件沖突,網上一大堆,這裏就不贅述了,但是發現 WebView 從一個高度很

Android開發遇到的adb命令總結

1、獲取螢幕解析度:    adb shell dumpsys window displays 2、修改裝置dpi :    adb shell              wm density  240  (以240dpi為例)       

經驗之談;Android開發需注意的一些坑

1、不要排斥新技術和新工具。 Android Studio 1.0 之後的版本,基本已經穩定到可以支援正常的工作開發的程度了。單純就書寫效率而言,Android Studio 帶來的好處絕對大於它和Gradle的學習成本。JetBrains的IDE,用過都說好。 還有就是適當的提升targe