zoukankan      html  css  js  c++  java
  • 安卓开发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方法:

     

    完成后的效果:

             (一)访问网页

     

             (二)设置要访问的网页

  • 相关阅读:
    n-1位数
    关于VC预定义常量_WIN32,WIN32,_WIN64
    python中的闭包
    TCP粘包, UDP丢包, nagle算法
    C++中 explicit的用法
    为什么mysql索引要使用B+树,而不是B树,红黑树
    屏障和屏障属性
    带有超时的读写锁
    pthread_mutex_timedlock
    段错误以及调试方式
  • 原文地址:https://www.cnblogs.com/soarwell/p/3788427.html
Copyright © 2011-2022 走看看