6
回答
java.lang.numberformatexception异常
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

编辑Editprefrence文本框的内容时会报错,改换成下面的代码之后都能修改编辑要退出程序之后再打开才看见编辑的内容,但是值没有传过去。不能保存我想编辑的值。跪求高手啊。。。。可能我说的不是很明白,慢慢理解咯。

代码部分:

举报
dwl900621
发帖于4年前 6回/17K+阅
共有6个答案 最后回答: 4年前

截图第二行告诉你:
java.lang.NumberFormatException:Invalid int:"出事啦!出"

这句话的意思是你传入了个非法的int值叫 "出事啦!出",你的o对象的toString方法返回的是一段中文字符

--- 共有 3 条评论 ---
dwl900621 <string name="warning_phone">15976886571</string> <string name="warning_sms">出事啦!出事啦!</string> <string name="shakeThreshold">40</string> 您在结合上面的图片看看。。。我实在不知道要怎么传咯。。 4年前 回复
MZHS回复 @dwl900621 : 什么意思?你是说你的o对象有可能是数字也有可能是字符?那是字符的时候怎么处理?o instanceof String如果为true就是字符串,数字同理 4年前 回复
dwl900621阿哥,那我要怎么改呢?我现在是能改字符串的时候不能改整型的,能改整型的时候不能改字符串.怎么办啊? 4年前 回复
    <string name="warning_phone">15976886571</string>
    <string name="warning_sms">出事啦!出事啦!</string>    

    <string name="shakeThreshold">40</string>

您在结合上面的图片看看。。。我实在不知道要怎么传咯。。

引用来自“dwl900621”的答案

    <string name="warning_phone">15976886571</string>
    <string name="warning_sms">出事啦!出事啦!</string>    

    <string name="shakeThreshold">40</string>

您在结合上面的图片看看。。。我实在不知道要怎么传咯。。

你的业务我不懂,我就报错的问题跟你说下怎么处理吧。

我看你上面的描述大概的意思是,编辑EditTextPrefrence时有可能退出,你想记录下编辑时的值


public boolean onPreferenceChange(Preference preference,Object o){
    if(o instanceof String){
        MoniterService.shakeThreshold=Integer.valueOf(o.toString());
        preference.setSummary((String)o)    
    }
    return ture;
}
//我猜你是想把“出事啦!出事啦!”这个字符串的Object对象给过滤掉,但是接收到的都是String对象,所以
//你的if语句没有起到作用
//解决方案:把
if(o instanceof String)
//替换为
if(o.toString().match("\\d+")) //这句话是用正则来判断你传进来的o对象是纯数字,还是其他的




引用来自“MZHS”的答案

引用来自“dwl900621”的答案

    <string name="warning_phone">15976886571</string>
    <string name="warning_sms">出事啦!出事啦!</string>    

    <string name="shakeThreshold">40</string>

您在结合上面的图片看看。。。我实在不知道要怎么传咯。。

你的业务我不懂,我就报错的问题跟你说下怎么处理吧。

我看你上面的描述大概的意思是,编辑EditTextPrefrence时有可能退出,你想记录下编辑时的值


public boolean onPreferenceChange(Preference preference,Object o){
    if(o instanceof String){
        MoniterService.shakeThreshold=Integer.valueOf(o.toString());
        preference.setSummary((String)o)    
    }
    return ture;
}
//我猜你是想把“出事啦!出事啦!”这个字符串的Object对象给过滤掉,但是接收到的都是String对象,所以
//你的if语句没有起到作用
//解决方案:把
if(o instanceof String)
//替换为
if(o.toString().match("\\d+")) //这句话是用正则来判断你传进来的o对象是纯数字,还是其他的




我换咯,号码编辑不能不存,而文字要跳出当前界面再进去之后才会发生改变。。。


就是我有三个ditTextPrefrence  一个是存放电话号号码 ,一个是存放文字,一个是存放整型(如40)。现在我想都可以编辑他们并且能保存。public static int shakeThreshold = 40;我只定义咯这个。当我没加MonitorService.shakeThreshold = Integer.valueOf(o.toString());这句代码之前,号码跟文字都是可以编辑跟保存的,但是整型不可以。加咯之后就反咯


这是一段代码
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
findPreference(getString(R.string.key_phone)).setSummary(sp.getString(getString(R.string.key_phone), null));
findPreference(getString(R.string.key_phone)).setOnPreferenceChangeListener(this);
findPreference(getString(R.string.key_sms)).setSummary(sp.getString(getString(R.string.key_sms), null));
findPreference(getString(R.string.key_sms)).setOnPreferenceChangeListener(this);
findPreference(getString(R.string.key_shakeThreshold)).setSummary(sp.getString(getString(R.string.key_shakeThreshold), null));
findPreference(getString(R.string.key_shakeThreshold)).setOnPreferenceChangeListener(this);

您在结合上面的看看 希望您能看得明白啊。能帮我解决啊。。
顶部