Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f050013}的问题

先来看下这个问题吧

10-29 04:11:46.945: WARN/Resources(541): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f050013}

查了下英文的资料

- What happened.
EditText converted default value as it would be an numeric, and omits leading zero. If you use a non-numeric value it won't be converted. If you type directly in input field (not default value) then the zero is not lost.
- What you think the correct behavior should be.
textPassword and textVisiblePassword input types must not consider default value as numeric in any conditions. This is probably should apply to numeric input types only.
 

主要问题是,EditText的值被设定为默认只接爱数值,如果是非数值就会出现不能转换

为什么我出现了这样的问题?

是因为我在TextVIEW中的Text属性设置为EditText的ID号,出现转换警告,在这想告诉大家的是要认真设置好XML中的每个属性,更不要同名。

android 会员买卖系统

这是我第一个作品,用了9天时间写完,项目不大,因为没真正好好的去学习android 。所以写起来比较慢,在接下来的学习中,会加快提高我的技术的。

如果大家有什么好东西,需要我用android 完成的,我也会努力去写一个。一来提高技术,二来交下朋友。朋友满天下,才是道理。看下我的东东吧

 

 

Android 中数据库查询方法 query()

在使用android sqlite 的时候  经常对query() 方法不太记得,网上找了些东西

Android 中涉及数据库查询的地方一般都会有一个 query() 方法,而这些 query 中有大都(全部?)会有一个参数 selectionArgs,比如下面这个 android.database.sqlite.SQLiteDatabase.query():

  • public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)  

selection 参数很好理解,就是 SQL 语句中 WHERE 后面的部分,即过滤条件, 比如可以为 id=3 AND name='Kevin Yuan' 表示只返回满足 id 为 3 且 name 为 "Kevin Yuan" 的记录。

    再实际项目中像上面那样简单的“静态”的 selection 并不多见,更多的情况下要在运行时动态生成这个字符串,比如

view plaincopy to clipboardprint?
public doQuery(long id, final String name) {  
  mDb.query("some_table", // table name   
        null, // columns  
        "id=" + id + " AND name='" + name + "'", // selection  
         //...... 更多参数省略  
  );  

public doQuery(long id, final String name) {
  mDb.query("some_table", // table name
        null, // columns
        "id=" + id + " AND name='" + name + "'", // selection
         //...... 更多参数省略
  );
}

在这种情况下就要考虑一个字符转义的问题,比如如果在上面代码中传进来的 name 参数的内容里面有单引号('),就会引发一个 "SQLiteException syntax error .... "。

     手工处理转义的话,也不麻烦,就是 String.replace() 调用而已。但是 Android SDK 为我们准备了 selectionArgs 来专门处理这种问题:

view plaincopy to clipboardprint?
public void doQuery(long id, final String name) {  
  mDb.query("some_table", // table name   
        null, // columns  
        "id=" + id + " AND name=?", // selection  
        new String[] {name}, //selectionArgs  
         //...... 更多参数省略  
  );  
  // ...... 更多代码  

public void doQuery(long id, final String name) {
  mDb.query("some_table", // table name
        null, // columns
        "id=" + id + " AND name=?", // selection
        new String[] {name}, //selectionArgs
         //...... 更多参数省略
  );
  // ...... 更多代码
}

也就是说我们在 selection 中需要嵌入字符串的地方用 ? 代替,然后在 selectionArgs 中依次提供各个用于替换的值就可以了。在 query() 执行时会对 selectionArgs 中的字符串正确转义并替换到对应的 ? 处以构成完整的 selection 字符串。 有点像 String.format()。

    不过需要注意的是 ? 并不是“万金油”,只能用在原本应该是字符串出现的地方。比如下面的用法是错误的:

view plaincopy to clipboardprint?
public void doQuery(long id, final String name) {  
  mDb.query("some_table", // table name   
        null, // columns  
        "? = " + id + " AND name=?", // selection XXXX 错误!? 不能用来替换字段名  
        new String[]{"id", name}, //selectionArgs  
      //...... 更多参数省略  
  );  
  // ...... 更多代码  

andorid column ‘_id’ does not exist错误的解决

这个问题搞了我晚上好几个小时,最后查了下网上,才找到问题。

关于这一部分,必须注意sqlite的主键命名,由于simpleCursorAdapter的方法只识别_id,所以,当你用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。否则就会出现java.lang.IllegalArgumentException: column '_id' does not exist错误。

android 学习笔记

android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!这是不行的!

如果你想在模拟器simulator上面访问你的电脑,那么就使用android内置的IP 10.0.2.2 吧,  10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias

记住,在模拟器上用10.0.2.2访问你的电脑本机

 

android http post  实现

 

  public void onClick(View v) {
    dopost(txt.getText().toString());
    
   }
  });
    }

 private void dopost(String val){
     //封装数据
     Map<String, String> parmas = new HashMap<String, String>();
     parmas.put("name", val);
    
     DefaultHttpClient client = new DefaultHttpClient();//http客户端
     HttpPost httpPost = new HttpPost("http://mhycoe.com/test/post.php");
    
     ArrayList<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
     if(parmas != null){
         Set<String> keys = parmas.keySet();
         for(Iterator<String> i = keys.iterator(); i.hasNext();) {
              String key = (String)i.next();
              pairs.add(new BasicNameValuePair(key, parmas.get(key)));
         }
    }
    
  try {
   UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(pairs, "utf-8");
         /*
          *  将POST数据放入HTTP请求
          */
         httpPost.setEntity(p_entity);
         /*
          *  发出实际的HTTP POST请求
           */
         HttpResponse response = client.execute(httpPost);
         HttpEntity entity = response.getEntity();
         InputStream content = entity.getContent();
   String returnConnection = convertStreamToString(content);
         show.setText(returnConnection);
  } catch (IllegalStateException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
    
 }

  private String convertStreamToString(InputStream is) {
   BufferedReader reader = new BufferedReader(new InputStreamReader(is));
         StringBuilder sb = new StringBuilder();
         String line = null;
         try {
              while ((line = reader.readLine()) != null) {
                   sb.append(line);
              }
         } catch (IOException e) {
              e.printStackTrace();
         } finally {
              try {
                   is.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
         }
         return sb.toString();
 }
}

回家迷途

又一次出远门,这次走的方向走反了,走北方去了。所以特别想家,9月29号晚坐上回南昌的火车,从北京返家。经过12个小时不合眼的火车硬座,差点肛裂了。。下次一定给我买张卧的,再送她一张。也许这也只能想想啦,我还是一直这么穷。。北漂的生活虽说已经剥落了我梦的外皮,但现实已经入我骨了。下火车之后就票也没买到,看到回家无望了,只好去学校走走,在学校的好好走了好多次。看到了好些同学,他们考公务员的考公务员的,考研的考研;像我这样子的都一起出去实习了。每一个同学都说要请我吃饭,都说好久没见了。中午我请他们一起吃了个饭。下午在床上 几秒钟就睡着了,这次是很快睡着了,一次深度睡眠。好久没睡个好觉了,很幸福的睡觉是我现在的梦想。晚上寝友请我吃饭,吃完后我一个人在学校里面自己走走,接着走第5圈。在路上又遇上了好几个同学,陪他们聊天,之后他们请我吃饭了,完他们又陪我走走,之后又撞上同学,他们又请我吃饭。然后就聊了聊他们在公司的故事,蛮好玩的。吃的差不多,又走了走,之后又撞到同学了,这次考研的看书回来,就一次聊着回寝室了。

寝室没床,就去同学那睡了,几天没睡好,拿着书睡着了,这次真是睡的很好。接第二天就没怎么爽,火车站不让进,我没票,人很多。打电话都不通,差点都要走丢,其实我们都找不到对方了。后来没办法,等等了好久发短信才找到对方的。去拦汽车也没拦到,为了1号能到安福,所以我晚上也去拦汽车回家,最后被我拦到了。晚10点半到安福,哈哈。。。回家真好。。。虽然一路杯具着。。

 

 

JAVA 数字转人民币大写

在写这个之前,老师出的,把阿拉伯数字转化为人民币大写

因为想的跟老师不一样,被老师BS了下,回到住处就把这个写出来

如果有问题,请提出

package com.joyleft.client;

public class MoneyUtil {
 
 private static final String[] NUMBERS={ "","壹", "贰", "叁", "肆", "伍", "陆",
       "柒", "捌", "玖" };
 private static final String[]  IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",
       "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };

 private static final String[] DUNIT = { "角", "分" };
 private static final String TOTAL="整";
 
 /**
  * 转成数组
  * @param number
  */
 public int[] toArray(String number){
  
  char[]cn=number.toCharArray();
  int []num=new int[cn.length];
  for(int i=0;i<cn.length;i++)
  {
   num[i]=Integer.parseInt(String.valueOf(cn[i]));
  }
  return num;
 }
 
 public void toChinese(String number){
  String strInt="";
  String strFloat="";
  String StrNum="";
  if(number.indexOf(",")>0)
   number=number.replace(",", "");
   
  if(number.indexOf(".")>0){//是否有小数点
   strInt=number.substring(0,number.indexOf("."));
  
   strFloat=number.substring(number.indexOf(".")+1);
   
   strFloat=round(strFloat);
   
   if("100".equals(strFloat)){//四舍五入后小数位没有了
    StrNum=this.handleInteger(strInt,true);
    strFloat="";
   }else{
    StrNum=this.handleInteger(strInt,false)+handleDecimal(strFloat);
   }
   
  }else{
   System.out.println(number);
  }
  System.out.println(StrNum);
 }
 /**
  * 整数部分处理
  * @param number
  */
 public String handleInteger(String number,boolean b){
  String strNum="人民币:";
  int[] num=null;
  if("0".equals(number)){
   return strNum+"";
  }
  num=toArray(number);

  for(int i=0;i<num.length;i++){
   if(b&&i==num.length-1){
    num[i]=num[i]+1;
    
   }
   if(num[i]!=0){
    strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
    
    }else{
      if(num.length-i==13)//万亿位为零 加万字
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
      else if(num.length-i==9)//亿位为零 加亿字
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
      else if(num.length-i==5)//万位为零 加万字
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
      else if(num.length-i==1)
       strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1]+TOTAL;
    }
   }
  return strNum;
 }
 /**
  * 小数部分处理
  * @param number
  */
 public String handleDecimal(String number){
  String strNum="";
  
  int[] num=toArray(number);

  for(int i=0;i<num.length;i++){
   
   if(num[i]!=0)
    strNum=strNum+NUMBERS[num[i]]+DUNIT[i];
   else
    strNum=strNum+NUMBERS[num[i]]+TOTAL;
  }
  return strNum;
 }
 /**
  * 四舍五入  保留两位
  * @param num
  */
 public String round(String number){
  String strNum="0."+number;
  float num=Float.parseFloat(strNum);
  int reNum=(int)num*1000%10;//取得千分位
  int intNum=0;
  
  if(reNum>=5){
   num=(num*100+1);
   intNum=(int)num;
  }else{
   
   intNum=(int)(num*100);
  }
  
  strNum=String.valueOf(intNum);
  if(strNum.length()==1)
   strNum="0"+strNum;
  return strNum;
 }
 /**
  * @param args
  */
 public static void main(String[] args) {
  new MoneyUtil().toChinese("3453845546430.200");
  new MoneyUtil().toChinese("0.99");
 
 }

}
结果

人民币:叁万肆仟伍佰叁拾捌亿肆仟伍佰伍拾肆万陆仟肆佰叁拾元整贰角整
人民币:玖角玖分
 

JAVA面试编程题

有4个彩色的立方体。立方体的6个面,每面都涂上了1种颜色。一共有4种颜色,蓝色(B),红色(R),绿色(G)和黄色(Y)。立方体的6个面称为前(front)、后(back)、左(left)、右(right)、上(top)、下(bottom)。

这4个立方体的颜色排列为:

编号    front    back     left     right    top     bottom

1       R      B        G      Y       B       Y

2       R      G        G      Y       B       B

3       Y      B        R      G       Y       R

4       Y      G        B      R       R       R

请将这4个立方体重叠摆放成为一个立柱,这个立柱有4个侧面,要求每个侧面都有4种颜色。

 

代码:

package com.joyleft.client;

public class ShowColor {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[][] color={
                {"R","B","G","Y","B","Y"},
                {"R","G","G","Y","B","B"},
                {"Y","B","R","G","Y","R"},
                {"Y","G","B","R","R","R"},
        };
        int count=0;
        int AllCount=0;
        for (int i = 0; i < color[0].length; i++) {
            for (int j = 0; j < color[1].length; j++) {
                for (int j2 = 0; j2 < color[2].length; j2++) {
                    for (int k = 0; k < color[3].length; k++) {
                        if(!color[0][i].equals(color[1][j])&&!color[0][i].equals(color[2][j2])&&!color[0][i].equals(color[3][k])){
                            if(!color[1][j].equals(color[2][j2])&&!color[1][j].equals(color[3][k])){
                                if(!color[2][j2].equals(color[3][k])){
                                    System.out.println(count+1+":"+color[0][i]+" "+color[1][j]+" "+color[2][j2]+" "+color[3][k]);
                                    count++;
                                }
                            }
                        }       
                        AllCount++;
                    }
                }
            }
        }
    System.out.println("一共有"+count+"种方法");   
    System.out.println("一共执行了"+AllCount+"步");
    }

}

结果

一共有130种方法
一共执行了1296步

1:R G Y B
2:R G B Y
3:R G Y B
4:R G Y B
5:R G B Y
6:R G Y B
7:R Y B G
8:R Y G B
9:R B Y G
10:R B G Y
11:R B Y G
12:R B Y G
13:R B G Y
14:R B Y G
15:B R Y G
16:B R G Y
17:B R Y G
18:B G Y R
19:B G Y R
20:B G Y R
21:B G R Y
22:B G Y R
23:B G Y R
24:B G Y R
25:B G R Y
26:B G Y R
27:B G Y R
28:B G Y R
29:B G R Y
30:B G Y R
31:B G Y R
32:B G Y R
33:B G R Y
34:B Y R G
35:B Y G R
36:B Y G R
37:B Y G R
38:B Y R G
39:G R Y B
40:G R B Y
41:G R Y B
42:G Y B R
43:G Y B R
44:G Y B R
45:G Y R B
46:G Y R B
47:G B Y R
48:G B Y R
49:G B Y R
50:G B R Y
51:G B Y R
52:G B Y R
53:G B Y R
54:G B R Y
55:G B Y R
56:G B Y R
57:G B Y R
58:G B R Y
59:G B Y R
60:G B Y R
61:G B Y R
62:G B R Y
63:Y R B G
64:Y R G B
65:Y G B R
66:Y G B R
67:Y G B R
68:Y G R B
69:Y G R B
70:Y G B R
71:Y G B R
72:Y G B R
73:Y G R B
74:Y G R B
75:Y B R G
76:Y B G R
77:Y B G R
78:Y B G R
79:Y B R G
80:Y B R G
81:Y B G R
82:Y B G R
83:Y B G R
84:Y B R G
85:B R Y G
86:B R G Y
87:B R Y G
88:B G Y R
89:B G Y R
90:B G Y R
91:B G R Y
92:B G Y R
93:B G Y R
94:B G Y R
95:B G R Y
96:B G Y R
97:B G Y R
98:B G Y R
99:B G R Y
100:B G Y R
101:B G Y R
102:B G Y R
103:B G R Y
104:B Y R G
105:B Y G
R
106:B Y G R
107:B Y G R
108:B Y R G
109:Y R B G
110:Y R G B
111:Y G B R
112:Y G B R
113:Y G B R
114:Y G R B
115:Y G R B
116:Y G B R
117:Y G B R
118:Y G B R
119:Y G R B
120:Y G R B
121:Y B R G
122:Y B G R
123:Y B G R
124:Y B G R
125:Y B R G
126:Y B R G
127:Y B G R
128:Y B G R
129:Y B G R
130:Y B R G

如果不对 请提醒下我,谢谢

微笑计划

很多人都说我应该多笑些,哈哈,好像是很少笑。也许他们没看到我笑,也许我是心笑肉不笑。因为一次意外,一边的面部神经不怎么灵。现在很多人都开始觉得我不是一个开朗的人。但我真是一个开朗的,只是经历过一些事,加上面部神经问题。哈哈,为了笑,现在我得每天笑。让自己真正笑的自然。真的笑才是我想要的。。。

远足只为梦想

已经离开南昌有一些时间了,也没什么时间来写我的博客;本以为出去了就会有更多的时候来写却不知时间更少。换新地方有一周多时间,这里的生活不像家乡,吃不习惯,睡不习惯,很多都不习惯,却习惯着一个人。不过我过的还不错,各位朋友请不要为我担心。老规矩贴代码:

没事写的Pet超市小程序,还是初级,别笑话我。。我现在从基础学起,过些天会写些好玩的,大点的东西。期待吧…..

interface Pet{
    public String getName();
    public String getColor();
    public int getAge();
}
class Cat implements Pet{
    private String name;
    private String color;
    private int age;
    public Cat(String name,String color,int age){
        this.setName(name);
        this.setColor(color);
        this.setAge(age);
    }
    public void setName(String name){
        this.name=name;
    }
    public void setColor(String color){
        this.color=color;
    }
    public void setAge(int age){
        this.age=age;
    }
    public String getName(){
        return this.name;
    }
    public String getColor(){
        return this.color;
    }
    public int getAge(){
        return this.age;
    }

}
class Dog implements Pet{
    private String name;
    private String color;
    private int age;
    public Dog(String name,String color,int age){
        this.setName(name);
        this.setColor(color);
        this.setAge(age);
    }
    public void setName(String name){
        this.name=name;
    }
    public void setColor(String color){
        this.color=color;
    }
    public void setAge(int age){
        this.age=age;
    }
    public String getName(){
        return this.name;
    }
    public String getColor(){
        return this.color;
    }
    public int getAge(){
        return this.age;
    }
}
class PetShop
{
    private Pet[] pets;
    private int foot;
    public PetShop(int len){
        if(len>0){
            this.pets=new Pet[len];
        }else{
            this.pets=new Pet[1];
        }
    }
    public boolean add(Pet pet){
        if(this.foot<this.pets.length){
            this.pets[this.foot]=pet;
            this.foot++;
            return true;
        }else{
            return false;
        }
    }
    public Pet[] search(String keyWord){
        Pet p[] =null;
        int count=0;
        for(int i=0;i<this.pets.length;i++){
            if(this.pets[i]!=null){
                if(this.pets[i].getName().indexOf(keyWord)!=-1||this.pets[i].getColor().indexOf(keyWord)!=-1){
                    count++;
                }
            }
        }
        p=new Pet[count];
        int f=0;
        for(int i=0;i<this.pets.length;i++){
            if(this.pets[i]!=null){
                if(this.pets[i].getName().indexOf(keyWord)!=-1||this.pets[i].getColor().indexOf(keyWord)!=-1){
                    p[f]=this.pets[i];
                    f++;
                }
            }
        }
        return p;
    }
}
public class PetShopDemo{
    public static void main(String args[]){
        PetShop ps=new PetShop(5);
        ps.add(new Cat("白猫","白色的",6));
        ps.add(new Cat("黑猫","黑色的",3));
        ps.add(new Cat("灰猫","灰色的",4));
        ps.add(new Dog("金毛","金色的",1));
        ps.add(new Dog("黄狗","黄色的",3));
        ps.add(new Dog("白狗","白色的",2));
        print(ps.search("黄"));
        }
    public static void print(Pet p[]){
        for(int i=0;i<p.leng
th;i++){
            if(p[i]!=null){
                System.out.println(p[i].getName()+","+p[i].getColor()+","+p[i].getAge());
            }
        }
    }
}