个人目的是开发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方法:
完成后的效果:
(一)访问网页
(二)设置要访问的网页