安卓开发3 -使用WebView开发web app

         我的目的是开发web apps,用WebView的形式,让b/s结构的oa、表单、crm等系统在安卓手机上运行。WebView就是一个手机浏览器,这样我们只需要对现有的web系统做简单的改造就可以实现手机app应用。

         这个开发过程用到的要点:新建android application project;调整menu item;使用intent打开一个activity;EditText和button的使用;关于APP已停止运行的提示;使用SharedPreferences实现简单的读写;使用WebView访问网页;完成效果展示。

         我用的开发工具是Eclipse(ADT V22.6.2),测试环境是vm下的android-x86-4.0-r1-thinkpad.iso。不同的环境下情况可能会不一样。

新建android application project

         New – android application project—项目名称oaApp2—对应的SDK我都采用4.0—next—next—在Configure Launcher Icon里我选择了自己的图片—其他的默认保存。

 

         完成项目后的主要文件路径:

                   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方法:

 

完成后的效果:

         (一)访问网页

 

         (二)设置要访问的网页

原文地址:https://www.cnblogs.com/soarwell/p/3788427.html