新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Android常見錯誤匯總

        Android常見錯誤匯總

        作者: 時間:2016-10-08 來源:網絡 收藏

        1.R.java消失或解析異常

        本文引用地址:http://www.104case.com/article/201610/305868.htm

        查看res中資源文件,圖片,xml等。比如圖片文件名不能有大寫不能有空格。

        搞定錯誤之后Project->clean就可以了。

        2.自定義title欄。

        首先要z在values->styles中定義一個style,然后在mainfest文件中設置android:theme.

        最后在Activity中按照這個順序寫:

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        setContentView(R.layout.activity_main);

        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_layout);

        3.SQLite isFirst和isBeforeFirst方法的區別:

        看下面一段代碼

        Cursor c = queryTheCursor(type);

        if(c.moveToLast())

        while (!c.isBeforeFirst()) {

        String tmpContent = new String();

        tmpContent = c.getString(c.getColumnIndex(content));

        contents.add(tmpContent);

        c.moveToPrevious();

        }

        c.close();

        代碼的作用是逆序輸出表中的內容,第三行如果用的是isFirst()的話就無法輸出第一行,正確做發是用isBeforeFirst()。

        4.eclipse刪除空行

        在eclipse中刪除某一行就用ctrl+D快捷鍵。如果你想刪除一個文件中的所有空行呢。

        可以用下面方法。

        1)打開源碼編輯器

        2)使用快捷鍵Ctrl+f

        3)在Find輸入框中輸入:^s*n

        4)Replace With輸入框的值為空

        5)在【Options】選中的Regular expressions

        6)點擊【Replace All】按鈕。

        7)OK!

        5.getX()和getRawX()的區別

        getX()是表示Widget相對于自身左上角的x坐標

        而getRawX()是表示相對于屏幕左上角的x坐標值(注意:這個屏幕左上角是手機屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一樣的道理

        6.imagView居中顯示問題

        xml設置如下:

        android:layout_width=fill_parent

        android:layout_height=wrap_content

        android:layout_gravity=center

        android:orientation=vertical >

        android:layout_width=wrap_content

        android:layout_height=wrap_content

        android:id=@+id/myImageView

        android:layout_gravity=center

        android:scaleType=matrix

        android:src=@drawable/pic >

        7.synchronized引發了 java.util.ConcurrentModificationException

        如果多個線程同時訪問一個 ArrayList 實例,而其中至少一個線程從結構上修改了列表,那么它必須 保持外部同步。

        解決方法:初始化的時候 將ArrayList改為CopyOnWriteArrayList;

        原理:

        JAVA中將引用從一個對象移到另外一個對象不需要消耗CPU時間,可以看做是一個原子操作。

        JAVA中如果一個對象仍舊存在引用,則不會被CG回收。

        CopyOnWriteArrayList就是根據以上兩個特點,在列表有更新時直接將原有的列表復制一份,并再新的列表上進行更新操作,完成后再將引用 移到新的列表上。舊列表如果仍在使用中(比如遍歷)則繼續有效。如此一來就不會出現修改了正在使用的對象的情況(讀和寫分別發生在兩個對象上),同時讀操 作也不必等待寫操作的完成,免去了鎖的使用加快了讀取速度。

        8.獲取隨機顏色

        并不用每次都生成三個隨機數,下面兩條語句就可以了:

        Random myRandom=new Random();

        int ranColor = 0xff000000 | mRandom.nextInt(0x00ffffff);

        10.去掉Activity的標題欄,全屏顯示

        在manifest文件中修改對應的Avtivity屬性。

        android:theme=@android:style/Theme.NoTitleBar.Fullscreen

        11.如何修改應用名稱及應用圖標

        修改程序的圖標,修改drawable文件夾的i→→c_launcher.png圖標,把新的圖標改名覆蓋就可以了。

        如果你要自己的名稱,可以修改AndroidManifest.xml的這個節點,application android:icon=@drawable/ic_launcher,不需要加文件擴展名。

        即使這么做了,真機調試的時候可能還是會有一些問題,比如圖標沒辦法改變,這個時候就需要在Eclipse中新建一個不同名的項目,然后轉移代碼(有點小麻煩~_~!)。

        12.關于調試方法

        調試的時候程序如果出錯,一般是查看logcat,看error發生的地方,會提示在程序的第幾行,然后去找就可以了。

        但有些錯誤沒辦法定位,那就把日志輸出成txt,然后去google,baidu吧。

        13.Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

        錯誤1:請求的字段在數據庫的表中不存在,一般是大小寫沒寫對;

        錯誤2:編程的中途改變表的字段,實際字段并沒有改變,解決方法是卸載當前版本,再安裝調試。

        14.android.content.res.Resources.loadXmlResourceParser

        在傳遞string類做參數的地方傳了int形變量。

        15.android.content.res.Resources$NotFoundException

        出現此類異常時,可以根據 Resource ID到資源類R中找相關的資源。比如0x7f030000,對應的是city_item布局文件,就可以將問題縮小到更小的范圍。對于這類運行時找不到資 源,但資源又確實存在的問題,可能的編譯打包時出現問題,沒有將該資源加入。可修改一下該資源,讓編譯器重新編譯。

        還有試一下Project ->Clean一下這個項目 也可以的。


        上一頁 1 2 3 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绵竹市| 泰顺县| 海兴县| 邵东县| 宁安市| 桑日县| 青浦区| 项城市| 石家庄市| 沁阳市| 自治县| 广灵县| 陵水| 屏东市| 台北县| 四川省| 富阳市| 衡南县| 梓潼县| 鱼台县| 舒城县| 镶黄旗| 宜君县| 瓮安县| 阜宁县| 延边| 北碚区| 临漳县| 富顺县| 安国市| 荔浦县| 翼城县| 高州市| 台北县| 韶山市| 绵竹市| 平果县| 嘉黎县| 三台县| 阆中市| 石屏县|