Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 发送长消息到共享首选项-Android_Java_Android_Sharedpreferences_Long Integer - Fatal编程技术网

Java 发送长消息到共享首选项-Android

Java 发送长消息到共享首选项-Android,java,android,sharedpreferences,long-integer,Java,Android,Sharedpreferences,Long Integer,我开发了一个对话框,当应用程序首次运行时,它会提示用户输入他/她的电话号码,但我在将其添加到共享首选项时遇到了问题。我已经从另一个视图(添加/编辑信息)设置了SP并正常工作,并且我能够提交用户id。问题是我使用了一个Long来表示电话号码,而不是字符串,因此我不断出现错误,似乎无法确定我需要做什么。我认为编辑也可能是一个问题。我已尝试将getText()更改为getLong(),但这似乎不起作用,而且我无法将其转换为字符串,因为电话号码在我的SP中被识别为Long。如何将Long提交给共享首选项

我开发了一个对话框,当应用程序首次运行时,它会提示用户输入他/她的电话号码,但我在将其添加到共享首选项时遇到了问题。我已经从另一个视图(添加/编辑信息)设置了SP并正常工作,并且我能够提交用户id。问题是我使用了一个Long来表示电话号码,而不是字符串,因此我不断出现错误,似乎无法确定我需要做什么。我认为编辑也可能是一个问题。我已尝试将getText()更改为getLong(),但这似乎不起作用,而且我无法将其转换为字符串,因为电话号码在我的SP中被识别为Long。如何将Long提交给共享首选项?谢谢

这是我的密码:

    if(phone == 0) {
        AlertDialog.Builder alert = new AlertDialog.Builder(this);

        alert.setTitle("Please Enter Your Phone Number");
        alert.setMessage("You must enter your phone number in order to use this application");

        final EditText input = new EditText(this);
        alert.setView(input);

        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
        Editable value = input.getText();

        Editor editor = shared.edit();
        editor.putLong("PHONE", value); //wants me to change putLong to putString
        editor.commit();
         }
        });
        alert.show();     
    }
对不起,我的英语不好

不能将字符串值转换为长字符串


使用
parseLong(String s,int-radix)
方法如下:
parseLong(value,10)

Alex,您可以执行以下操作将Long放入SP中:

String value = input.getText().toString();

Editor editor = shared.edit();
editor.putLong("PHONE", Long.valueOf(value));
editor.commit();
改变

可编辑值=input.getText()

这将为您提供文本框的字符串值

现在来储存

如果且仅当您确定(且已验证)此处的
值仅包含数字时,请执行以下操作:

editor.putLong("PHONE", Long.valueOf(value));
我还是更喜欢

editor.putString("PHONE",value);

您也可以随时使用字符串检索它,然后根据需要将其更改为Long…

注意这种做法。你可能会得到带有“+”和/或“-”的电话号码,然后一切都会变得一团糟。你能详细介绍一下吗?我以前试过,运气不好,但我没有第二次争论。这个数字到底是什么?第二个参数是你想要使用的数字系统的基础。我想这很接近,但是应用程序崩溃了,我得到了以下错误:
,原因是:java.lang.ClassCastException:java.lang.String不能转换为java.lang.Long
我可以问一下你将电话号码存储为Long的确切原因吗?就我个人而言,我只会将电话号码存储为字符串或整数,而不是长的。我觉得这是有原因的,但我记不起来了。我将尝试将其切换为字符串。我正在数据库中存储这个,我可以将电话号码存储为VARCHAR吗?我觉得我不能做什么了,一个瓦查尔就可以了。在再次考虑原因之前,请不要改变你身边的一切。我可不想把你弄得乱七八糟!另一条建议是,如果您还没有这样做,请在EditText视图上使用以下XML属性:android:inputType=“phone”。这将限制用户可以在EditText视图中输入的字符,从而为您节省一些麻烦。我将其更改为字符串,现在可以使用了。谢谢你的帮助!
editor.putString("PHONE",value);