個人目的是開發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方法:
完成後的效果:
(一)訪問網頁
(二)設置要訪問的網頁