安卓開發3 -使用WebView開發web app

         個人目的是開發web apps,用WebView的形式,讓b/s結構的oa、表單、crm等系統在安卓手機上運行。WebView就是一個手機瀏覽器,這樣咱們只須要對現有的web系統作簡單的改造就能夠實現手機app應用。java

         這個開發過程用到的要點:新建android application project;調整menu item;使用intent打開一個activity;EditText和button的使用;關於APP已中止運行的提示;使用SharedPreferences實現簡單的讀寫;使用WebView訪問網頁;完成效果展現。android

 

         我用的開發工具是Eclipse(ADT V22.6.2),測試環境是vm下的android-x86-4.0-r1-thinkpad.iso。不一樣的環境下狀況可能會不同。web

 

新建android application project瀏覽器

         New – android application project—項目名稱oaApp2—對應的SDK我都採用4.0—next—next—在Configure Launcher Icon裏我選擇了本身的圖片—其餘的默認保存。app

 

         完成項目後的主要文件路徑:eclipse

                   src/…/MainActivity.java                     java代碼函數

                   res/layout/fragment_main.xml       佈局界面文件工具

                   res/menu/main.xml                            菜單文件(右上角)佈局

                   res/values/strings.xml                       顯示的文字,可實現多語言,我將app_name修改成「數飛OA 手機APP」。開發工具

                   res/AndroidMainfest.xml                   manifest file

                  

 

調整menu item

         創建項目後,我首先調整了menu item(右上角的菜單),最終有「刷新」和「設置」這兩個菜單項。

         (一)、增長圖標:new – other – android – android icon set-在Choose Icon Set Type這裏選擇Menu Icons,名稱爲ic_menu_set – 在 Configure Icon Set這裏,text輸入「設置」,font選擇「微軟雅黑」,完成。完成後res/drawable-hdpi等文件夾下多了ic_menu_set.png圖片。

 

         (二)、修改menu/main.xml:打開main.xml後默認有個item,修改默認的id值,將showAsAction改成ifRoom,增長android:icon。修改後以下:

    <item

        android:id="@+id/action_settings1"

        android:icon="@drawable/ic_menu_set"

        android:orderInCategory="100"

        android:showAsAction="ifRoom"

        android:title="@string/action_settings"/>

 

         (三)、修改src下MainActivity.java的onOptionsItemSelected方法,將默認的action_settings修改成action_settings1。菜單觸發就在這個方法下實現。

         (四)、「刷新」菜單按以上步驟增長,id設置爲action_load

 

使用intent打開一個activity

         「設置」菜單的做用是打開一個activity。

         (一)、新建activity,new – other – android – android activity – next – next – activity name修改成setActivity-Hierarchical parent選擇爲com.example.oaapp2.MainActivity

         (二)、完成後在fragment_set上增長一個Plain Text和一個button

         (三)、在MainActivity.java:onOptionsItemSelected方法中實現代碼:

       if (id == R.id.action_settings1) {

           Intent intent = new Intent(this, SetActivity.class);

           startActivity(intent);         

           return true;

       }

         (四)、eclipse中的小技巧:當複製代碼到eclipse中,相關的類沒有import的話會報錯,使用快捷健ctrl + shift + o實現自動import。這個很好用。

 

EditText和button使用

         增長button的onClick方法,設置editText的值,獲取editText的值。

         (一)、爲了好識別,在fragment_set.xml中id分別修改成editTextUrl, buttonSet

 

         (二)、在fragment_set.xml中buttonSet增長android:onClick="buttonSetClick",其中buttonSetClick是本身增長的函數名稱

 

         (三)、在SetActivity.java中增長buttonSetClick函數
         public void buttonSetClick (View view) {}

 

         (四)、在buttonSetClick裏增長代碼,獲取EditText的值

       View rootView = (View)view.getParent();

       EditText editTextUrl =      (EditText)rootView.findViewById(R.id.editTextUrl);

       String sUrl = editTextUrl.getText().toString();     

 

關於APP已中止運行的提示

         剛開始寫android app的時候,常常遇到「已中止運行」的提示,調試的時候發現null,那怕跟着developer.android的training一步步增長代碼,也會這樣。    

 

         一種狀況是activity_main.xml和fragment_set.xml的問題。在SetActivity.java或MainActivity.java裏直接用findViewById來獲取fragment裏的EditText,就確定是null,用null去獲取值在運行時確定出現「中止運行」的提示。所以我在buttonSetClick裏先用view.getParent()來獲取EditText的上級。

 

         一種狀況是函數名稱寫錯了。好比在xml中定義了android:onClick="buttonSetClick",在

MainActivity.java中這個函數名不存在,在運行時一點擊這個按紐就會出現「中止運行」。

 

使用SharedPreferences實現簡單的讀寫

         我已擁有一個editText能夠修改默認的網址,這個網址要保存,最簡單的方法就是用SharedPreferences。

         (一)、在buttonSetClick後繼續增長代碼,實現保存輸入的網址

       SharedPreferences sharedPref = this.getSharedPreferences("oaapp", Context.MODE_PRIVATE);

       Editor editor = sharedPref.edit();

       editor.putString("url", sUrl);

       editor.commit();

         (二)、在PlaceholderFragment的onCreateView裏增長代碼,實現editText自動顯示保存的網址

 

 

使用WebView訪問網頁

         (一)打開res/layout/fragment_main.xml,去掉默認的hello text,從Composite里拉入WebView,並拉到最大。Id默認爲webView1。

         (二)在MainActivity.java的PlaceholderFragment裏修改onCreateView方法:

 

        

(三)在res/AndroidManifest.xml中設置權限。這個uses-permission跟application

平級,追加到</application>後。

         <uses-permission android:name="android.permission.INTERNET"/>

 

(四)、增長「刷新」菜單的代碼:讀取已設置的url,在webview中顯示。

         在MainActivity中先定義一個全局Fragment fragment = null;

         修改onCreate方法:

                   if (savedInstanceState == null) {

                            fragment = new PlaceholderFragment();

                            getFragmentManager().beginTransaction()

                                               .add(R.id.container, fragment).commit();

                   }

         修改onOptionsItemSelected方法:

 

 

完成後的效果:

         (一)訪問網頁

 

         (二)設置要訪問的網頁

相關文章
相關標籤/搜索