将文本转换为整数,递增并重新转换为文本,有更简单的方法吗? 我正在做一个Android测试,即使是C++的一些经验,我也是java初学者。

将文本转换为整数,递增并重新转换为文本,有更简单的方法吗? 我正在做一个Android测试,即使是C++的一些经验,我也是java初学者。,java,android,Java,Android,我在文本区域中打印了一个变量,它统计收到的推送通知的数量。我成功地找到了一种在接收事件中启动代码的方法,并希望增加它 我找到的方法(不起作用)是获取textArea的内容,将其转换为整数,递增,转换为字符串,然后转换为char[],然后发送回文本区域 类活动: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.

我在文本区域中打印了一个变量,它统计收到的推送通知的数量。我成功地找到了一种在接收事件中启动代码的方法,并希望增加它

我找到的方法(不起作用)是获取textArea的内容,将其转换为整数,递增,转换为字符串,然后转换为char[],然后发送回文本区域

类活动:

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ParseAnalytics.trackAppOpened(getIntent());

    TextView textView = (TextView) findViewById(R.id.textView1);

    char [] test = Integer.toString(Integer.parseInt(textView.getText().toString()) + 1).toCharArray();

    System.out.println(test);

    textView.setText(test, 0, 10);
}
类解析应用程序:

@Override
public void onCreate() {
    super.onCreate();

    // Add your initialization code here
    Parse.initialize(this, Parse_ID, Parse_ID_2);

    PushService.setDefaultPushCallback(this, ParseStarterProjectActivity.class);
    ParseInstallation.getCurrentInstallation().saveInBackground();

    ParseUser.enableAutomaticUser();
    ParseACL defaultACL = new ParseACL();

    // If you would like all objects to be private by default, remove this line.
    defaultACL.setPublicReadAccess(true);

    ParseACL.setDefaultACL(defaultACL, true);
}
因此,应用程序崩溃,logCat告诉我(如果我注释掉setText,测试仍然具有良好的价值):


如果我理解你的处境,你想要这样的东西吗

public static void main(String[] args) throws IOException {
    int i = Integer.parseInt("100");
    i++;
    String v = String.valueOf(i);
    System.out.println("v = " + v);
}
输出为

v = 101
textView.setText(测试,0,10)

因为您的
char[]测试的长度不为10,所以导致IndexOutOfBoundsException。
因此,在尝试将其设置为TextView之前,请检查char[]test的长度

大概

if(test.length >= 10)
{
  textView.setText(test, 0, 10);
}else
{
  textView.setText(test, 0, test.length);
}

将该数字存储在类变量中,并在
TextView

private int count = 0;

//when needed update count
count++;

//show value in TextView
private void showValue() {
    textView.setText(String.valueOf(count));
}

您的代码应该如下所示:

int value;
    try {
         value = Integer.valueOf(test);
         value++;
    } catch (NumberFormatException e) {
        value = 1;
    }
首先,当您得到文本时,最好输入本地字符串

ParseAnalytics.trackAppOpened(getIntent());

TextView textView = (TextView) findViewById(R.id.textView1);

String test = textView.getText().toString();
第二,当你想要一个int值时,为了你的安全,最好用try-and-catch来包围它。 获取如下值:

int value;
    try {
         value = Integer.valueOf(test);
         value++;
    } catch (NumberFormatException e) {
        value = 1;
    }
第三,按如下方式设置新编号和日志:

System.out.println("Current value: "+value);

textView.setText(String.valueOf(test));

希望有帮助。

为什么不使用
setText(String.valueOf(Integer.parseInt(textView.getText().toString())+1))
?@Zouzou:因为setText(String)不存在。
setText(CharSequence s)
存在,而
字符串是
CharSequence
,那么到char[]
为什么?你不需要那个。@zouzu:你说得对,我只是忘了把setText链接到textView
textView.setText(test,0,test.length)
是不够的,我不明白它应该是我应该给出的char[]的大小。@DrakaSAN-我刚才提到了,因为你的问题包含值10。因为我认为你必须用它的长度10。如果没有必要,那么您可以跳过该部分。根据您的评论,如果您不关心字符[]测试的
长度
,则无需将字符串转换为字符[],只需直接使用
int
和append
操作符“