当前位置:  编程技术>移动开发
本页文章导读:
    ▪作项目遇到的点点点滴滴(持续更新)        做项目遇到的点点点滴滴(持续更新) 1.我想实现一个EditText点击后出现DatePickerDialog然后返回值到EditText显示。做完之后发现点击EditText只是触发焦点或者弹出软键盘(我把软键盘禁用之后就只.........
    ▪ onNewIntent()与singleTask起动模式        onNewIntent()与singleTask启动模式 当有一个活动A设置启动模式为singleTask模式时。  又有多个其他活动需 经过Intent 跳转到活动A,并附带信息。 那么肯定会设置action! 当活动A 判定是哪一.........
    ▪ JAVA基础:语句标签的合法使用,以及{}语句块到底有什么用       JAVA基础:语句标签的合法使用,以及{}语句块到底有什么用? 假如写这样的一段代码: int i; { int j=1; i=j; } 如果这段代码是存在于类定义区域,那么我们知道它是个普通的语句块,用.........

[1]作项目遇到的点点点滴滴(持续更新)
    来源: 互联网  发布时间: 2014-02-18
做项目遇到的点点点滴滴(持续更新)

1.我想实现一个EditText点击后出现DatePickerDialog然后返回值到EditText显示。
做完之后发现点击EditText只是触发焦点或者弹出软键盘(我把软键盘禁用之后就只触发焦点)
然后在获得焦点之后再次点击才会出现DatePickerDialog...
方法一:这个是在View里定义onTouchEvent()的默认处理逻辑。假如一个View是可以获得焦点的话,那么第一次点击操作就是获取焦点。这里有源代码:

  boolean focusTaken = false;
                        if (isFocusable() && isFocusableInTouchMode() && !isFocused()) {
                            focusTaken = requestFocus();
                        }

                        if (!mHasPerformedLongPress) {
                            // This is a tap, so remove the longpress check
                            removeLongPressCallback();

                            // Only perform take click actions if we were in the pressed state
                            if (!focusTaken) {
                                // Use a Runnable and post this rather than calling
                                // performClick directly. This lets other visual state
                                // of the view update before click actions start.
                                if (mPerformClick == null) {
                                    mPerformClick = new PerformClick();
                                }
                                if (!post(mPerformClick)) {
                                    performClick();
                                }
                            }
                        }

所以如果你想改变这个的话,只能自己重新实现一个onTouchEvent()而不调用super.onTouchEvent(),注意参考源代码。


方法二:设置edittext不能获取到焦点.就OK了,即在TextView中加入android:focusable="false"


2.一个textView点击后跳转到另一个页面。 

刚开始此textView没有跑马灯效果,布局如下: 
        <TextView 
            android:id="@+id/title" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textSize="25px" /> 

后来觉得加上跑马灯效果更好点,故布局如下: 
        <TextView 
            android:id="@+id/title" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:ellipsize="marquee" 
            android:focusable="true" 
            android:focusableInTouchMode="true" 
            android:marqueeRepeatLimit="marquee_forever" 
            android:scrollHorizontally="true" 
            android:singleLine="true" 
            android:textSize="25px" /> 

但问题出现了,用上面的布局,点击之后会进行页面的跳转,用下面的布局,跑马灯效果是有了,但点击textView后不进行页面的跳转。 
那么我应该如何实现了?求解答。

方法:删除android:focusable="true",原理:android:focusable="true" ,这样当你点击时其实是点击的是textView,从而textView获取焦点而不是listView中的某一列获取焦点,当然也就不会触发onListItemClick方法,这样当然也就不会进行页面的跳转了。解决方法是:删去这个属性,就OK了!

 

 

3.201200920 -----今天又遇到个问题。android手机联互联网问题!如何判断手机是否连接互联网?本来以为很简单,以为直接调用下面的方法就可以了

 

 

/**

* 检查网络连接情况

* @return 0: None, 1: Wifi, 2: GPRS, 3: Other

*/

protected static int checkNetworkType(Context context) {

ConnectivityManager connManager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

 

// 获取代表联网状态的NetWorkInfo对象

NetworkInfo networkInfo = connManager.getActiveNetworkInfo();

// 获取当前的网络连接是否可用

if (networkInfo == null || !networkInfo.isAvailable())

return 0;

 

// Wifi

State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)

.getState();

if (State.CONNECTED == state) {

return 1;

}

 

// GPRS

state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)

.getState();

if (State.CONNECTED == state) {

return 2;

}

 

return 3;

}

其实不然,我发现当手机关闭GPRS,然后连接公司的wifi,通知栏显示wifi已经连接上,并且这个方法返回值为1,我就默认为此时我们的手机已经联网了,但实际发现此时手机还是打不开网页,对应到项目中来就是我们不能从服务器获取信息。

后来想想可能是因为我们连接了wifi,但此时公司路由器并没有连外网,所以还是打不开网页,也获取不了服务器信息。怎么解决判断手机是否连接外网暂时还没有想到,继续研究....

 

 

4.20120921项目交给测试部门测试(其实自己也觉得有很多bug)

今天遇到的问题:项目在A手机上能够后运行,B手机上也能够运行,但在C手机上就运行不起来。出现:Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY的错误。在网上一查,大部分的人都说是我建工程的时候target没有选google map的target,但奇怪的是我建的项目就是google map的target。后来看到一篇文章,试着解决,终于解决了。链接:http://www.cnblogs.com/jrvin/archive/2011/05/24/2055718.html

其中遇到过Read-only file system问题,但这都是些小问题,最后还是解决了!

 

 

5.20120922项目测试又出现了一个问题,关于camera问题。拍完照传到服务器相片是逆时针旋转90度的。目前没有解决。。。努力中!


    
[2] onNewIntent()与singleTask起动模式
    来源: 互联网  发布时间: 2014-02-18
onNewIntent()与singleTask启动模式

当有一个活动A设置启动模式为singleTask模式时。

 又有多个其他活动需 经过Intent 跳转到活动A,并附带信息。 那么肯定会设置action!

当活动A 判定是哪一个活动过来的时候。

 

  当活动A没被系统杀了。活动A的oncreate 将不执行,先执行onNewIntent,再onResume!

 所以在onNewIntent里面 可

 

[java] view plain copy print ?
  • @Override   
  • public   void  onNewIntent(Intent arg0) {  
  •     // TODO Auto-generated method stub   
  •     super .onNewIntent(arg0);  
  •     System.out.println("OnNewIntent进来了" );  
  •     setIntent(arg0);  
  •     intent = this .getIntent();  
  • }  
  • 	@Override
    	public void onNewIntent(Intent arg0) {
    		// TODO Auto-generated method stub
    		super.onNewIntent(arg0);
    		System.out.println("OnNewIntent进来了");
    		setIntent(arg0);
    		intent = this.getIntent();
    	}

     

     关键是 setintent(arg0);

     只有设置了这个 才会更新 intent。(action)
    否则一直是第一个跳转到活动A的那个intent的action


        
    [3] JAVA基础:语句标签的合法使用,以及{}语句块到底有什么用
        来源: 互联网  发布时间: 2014-02-18
    JAVA基础:语句标签的合法使用,以及{}语句块到底有什么用?

    假如写这样的一段代码:

    int i;
    {
        int j=1;
        i=j;
    }

    如果这段代码是存在于类定义区域,那么我们知道它是个普通的语句块,用于初始化类属性的内容,它会在类实例化的时候被调用,里面可以执行一些方法。

    在很多实例里,它会用于单例等模式,之前加上一个static,来为复杂的类初始化内容,可以避免一些由于加载顺序引起的运行期异常。

     

    但是,如果这段代码出现在方法里呢?

    它基本一点意义都没有。在我自己从前的想法里,它就是个把代码括起来的格式,没有其他。

    今天写了一点和“语句标签”相关的代码:

     

        label17: int i;
                int j;
                ThreadGroup[] arrayOfThreadGroup;
                if (flag)
                    break label17;
                return 0;

    在“:”位置出现了异常“Syntax error on token ":", { expected after this token”。

    即是说,当代码无法单行存在的时候(int i在方法体内部必须有明确的实例化\赋值位置),label17需要用语句块标明。

    正确的格式是:

        label17: {
                int i;
                int j;
                ThreadGroup[] arrayOfThreadGroup;
                if (flag)
                    break label17;
                return 0;
            }
    或者:
      
        label17: 
                int i;
                int j;
                ThreadGroup[] arrayOfThreadGroup;
                if (flag){
                    break label17;
                return 0;}

     

    再来看个错误的用法:

            label13: int x = 0;

    很明显,在标签后有个默认的单行语句块,这个x在以后的任何位置都无法被使用到,错误。提示如下:

    Multiple markers at this line
    - x cannot be resolved to a variable
    - Syntax error on token "int", delete this token

    正确的格式有两种:

            int x = 0;
            label13:  x = 0;
    
    
    或者
    
    
    
            label13:{ int x = 0;}

     

    于是推想,以前的一个思维误区,for(){},if(){}之类的用法中,逻辑if()和语句块{}应该是相互独立的两种语法。

    1 楼 if(i!=我){} 2012-08-26  
    不知所云!

    基础没学好的后果!
    2 楼 风云无浪 2012-08-26  
    确定这是java基础么。。break label我只在反编译的错误代码里见过。break不是只适用于循环语句外么?
    3 楼 if(i!=我){} 2012-08-30  
    break can be used inside of a loop or a switch

        
    最新技术文章:
    ▪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