当前位置:  编程技术>移动开发
本页文章导读:
    ▪PreferenceActivity 中的 onBuildHeaders() 调用机时        PreferenceActivity 中的 onBuildHeaders() 调用时机1. onBuildHeaders(List<PreferenceActivity.Header>) 在前一篇博文中(何时使用 Preference Headers)我们讲述了 Preference Headers 的作用和使用场景,onBuildHeaders 这.........
    ▪ 【struts2】赵雅智_struts2开发环境筹建        【struts2】赵雅智_struts2开发环境搭建 struts2是MVC框架 struts2的开发环境搭建 1.找到开发Struts2应用需要使用到的jar文件. 需要下载struts2               官网:                 htt.........
    ▪ AppWidget怎么打开一个Acticity       AppWidget如何打开一个Acticity?在Android手机的AppWidget上如何打开一个Activity? 一、onUpdate()函数中  //创建一个Intent对象   Intent intent = new Intent(context,MyActivity.class);   intent.setAction(broadCastString);   .........

[1]PreferenceActivity 中的 onBuildHeaders() 调用机时
    来源: 互联网  发布时间: 2014-02-18
PreferenceActivity 中的 onBuildHeaders() 调用时机
1. onBuildHeaders(List<PreferenceActivity.Header>)
在前一篇博文中(何时使用 Preference Headers)我们讲述了 Preference Headers 的作用和使用场景,onBuildHeaders 这个方法是在 PreferenceActivity 中用于创建和初始化 headers 的,创建 headers 之后我们可以在程序中引用 headers 实例,但需要注意其创建的时机,以免在创建之前就去引用从而导致出错。

2. 调用时机
  • 通过分析 PreferenceActivity 的源代码,可知 headers 的创建时机是在 onCreate() 的过程中被调用的,如下所示:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(com.android.internal.R.layout.preference_list_content);

        mListFooter = (FrameLayout)findViewById(com.android.internal.R.id.list_footer);
        mPrefsContainer = (ViewGroup) findViewById(com.android.internal.R.id.prefs_frame);
        boolean hidingHeaders = onIsHidingHeaders();
        mSinglePane = hidingHeaders || !onIsMultiPane();
        String initialFragment = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
        Bundle initialArguments = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
        int initialTitle = getIntent().getIntExtra(EXTRA_SHOW_FRAGMENT_TITLE, 0);
        int initialShortTitle = getIntent().getIntExtra(EXTRA_SHOW_FRAGMENT_SHORT_TITLE, 0);

        if (savedInstanceState != null) {
            // We are restarting from a previous saved state; used that to
            // initialize, instead of starting fresh.
            ArrayList<Header> headers = savedInstanceState.getParcelableArrayList(HEADERS_TAG);
            if (headers != null) {
                mHeaders.addAll(headers);
                int curHeader = savedInstanceState.getInt(CUR_HEADER_TAG,
                        (int) HEADER_ID_UNDEFINED);
                if (curHeader >= 0 && curHeader < mHeaders.size()) {
                    setSelectedHeader(mHeaders.get(curHeader));
                }
            }

        } else {
            if (initialFragment != null && mSinglePane) {
                // If we are just showing a fragment, we want to run in
                // new fragment mode, but don't need to compute and show
                // the headers.
                switchToHeader(initialFragment, initialArguments);
                if (initialTitle != 0) {
                    CharSequence initialTitleStr = getText(initialTitle);
                    CharSequence initialShortTitleStr = initialShortTitle != 0
                            ? getText(initialShortTitle) : null;
                    showBreadCrumbs(initialTitleStr, initialShortTitleStr);
                }

            } else {
                // We need to try to build the headers.
                onBuildHeaders(mHeaders);

                // If there are headers, then at this point we need to show
                // them and, depending on the screen, we may also show in-line
                // the currently selected preference fragment.
                if (mHeaders.size() > 0) {
                    if (!mSinglePane) {
                        if (initialFragment == null) {
                            Header h = onGetInitialHeader();
                            switchToHeader(h);
                        } else {
                            switchToHeader(initialFragment, initialArguments);
                        }
                    }
                }
            }
        }

	/* 以下省略 */
    }

  • 我们在继承的 PreferenceActivity 中实现 onCreate() 的过程中必须认清楚,在调用 super.onCreate() 之后才能引用已经初始化的 headers,否则将出错。




    
[2] 【struts2】赵雅智_struts2开发环境筹建
    来源: 互联网  发布时间: 2014-02-18
【struts2】赵雅智_struts2开发环境搭建

struts2是MVC框架

struts2的开发环境搭建

1.找到开发Struts2应用需要使用到的jar文件.

  • 需要下载struts2

       

      官网:
                http://struts.apache.org 

      下载地址 :

            http://struts.apache.org/download.cgi#struts238  版本号:struts2.3.8

     

     

说明:

             

 包含:

              

                 Apps 应用

                 Lib 类库文件

                 Docs 帮助文档

                 Src 源代码

找它需要开发的jar文件  

需要解压:或者找到struts-2.3.8-all\struts-2.3.8\apps 下面的文件如下:


提供了一个空白的项目struts2-blank 我们就可以在这个项目上进行开发struts2.

如果开发的过程中需要其他的jar的文件的支持 怎么办?

  需要到\struts-2.3.8-all\struts-2.3.8\lib 中找相应的jar文件。

struts2-blank.war项目 怎么解压 
复制到tomcat中的webapps中 启动tomcat即可

在apache-tomcat\bin 找到 点击启动

观察:

可以打开浏览器IE

   输入  http://localhost:8080/struts2-blank

  

找到解压后的jar文件 :apache-tomcat\webapps\struts2-blank\WEB-INF\lib

2.编写Struts2的配置文件

对比servlet :

    新建一个登陆的项目 :

        http://localhost:8080/demo/servlet/demo.do?username=&userpass=

    ? 参数   get请求方式

    ? 没有后缀  post请求方式

   

web.xml文件 

   <servlet>

    <servlet-name>DemoServlet</servlet-name>

  <servlet-class>www.csdn.demo.serlvet.DemoServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>DemoServlet</servlet-name>

    <url-pattern>/servlet/demo.do</url-pattern>

</servlet-mapping>

过滤: 过滤器

监听 :监听器

都需要在web.xml文件中配置

客户端 ---->web容器

                 Web.xml文件---->控制器 servlet---->Model--->数据库

<----------------------------------



Struts2 独有的配置文件

       struts.xml文件

 存放在什么位置? 配置文件内容是什么?

 

  1、必须位于classes路径下面

开发项目的过程中 我们把它放到src路径下面  编译后就会存放到classes下面

客户端 ---->web容器

                 Web.xml文件---->控制器 servlet---->Model--->数据库

                                    <----------------------------------

3.在web.xml中加入Struts2 MVC框架启动配置

web.xml文件配置  读取struts.xml文件

 2.1.3之前:

 org.apache.struts2.dispatcher.FilterDispatcher

 配置如下: 2.1.3版本后 如下 配置:

  <filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

注意:

   struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件

Struts1(struts-config.xml) 在web.xml文件中配置是一个servlet

分析第一个struts2的程序

   启动 :


013-2-26 11:07:38 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info

信息: Parsing configuration file [struts-default.xml]

2013-2-26 11:07:38 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info

信息: Unable to locate configuration files of the name struts-plugin.xml, skipping

2013-2-26 11:07:38 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info

信息: Parsing configuration file [struts-plugin.xml]

2013-2-26 11:07:38 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info

信息: Parsing configuration file [struts.xml]

struts-default.xml

struts-plugin.xml

struts.xml

三个文件启动的过程中 如果有配置相同的  那么后边的会覆盖前面的。

Bug记录:

1、java.net.BindException: Address already in use: JVM_Bind

分析:  你使用的tomcat被第二次 或者是n次 启动    以前没有关闭 导致的一个bug

解决方法:关闭 已经启动的tomcat即可。

2、

      分析:找不到你请求的 url既是:servlet/demo.do

      解决方法:  看你的url是否存在?  如果不存在 根据业务添加。

                                

       

3、

 分析:在服务器端找不到对应的demo的action

Demo.action

 /csdn/demo.action

只提示 :demo没有找到

/csdn下面没有找到 demo action 

4、Bug 

No result defined for action com.opensymphony.xwork2.ActionSupport and result success

分析:No result 没有结果

om.opensymphony.xwork2.ActionSupport  struts2所有action基类

5、java.lang.NoSuchMethodException: www.csdn.helloworld.action.DemoAction.execute()

Execute 方法名称写的不匹配


    
[3] AppWidget怎么打开一个Acticity
    来源: 互联网  发布时间: 2014-02-18
AppWidget如何打开一个Acticity?

在Android手机的AppWidget上如何打开一个Activity?

一、onUpdate()函数中

 //创建一个Intent对象
  Intent intent = new Intent(context,MyActivity.class);
  intent.setAction(broadCastString);

  //设置pendingIntent的作用
  PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
  RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.appwidgetlayout);

  //绑定事件
  remoteViews.setOnClickPendingIntent(R.id.image_wifi,pendingIntent);

  //更新Appwidget
  appWidgetManager.updateAppWidget(appWidgetIds,remoteViews);

 

二、AndroidManifest.xml中注册MyActivity

        <activity
            android:name="com.example.myappwidget.MyActivity"
            android:label="hehe" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

大体的步骤是如此,具体你可以根据自己的要求做出修改


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3