getText()。toString()不起作用,返回空

时间:2016-12-12 16:59:52

标签: android android-edittext filewriter

我正在尝试保存userName,但保存的文本文件始终返回, 6。如何让它显示输入EditText的用户名的任何值,其余的?例如Don, 6。我已经读过你必须使用getText()但是在保存的文件中没有返回任何内容。

但是,如果我将6替换为意图从之前的活动中获得分数,那么这是有效的!像这样...

        Bundle extras = getIntent().getExtras();
        int score = extras.getInt("Score");

所以这就变成......

public void addListenerToEndButton() {

    quit = (Button) findViewById(R.id.endBtn);
    userName = (EditText) findViewById(R.id.userName);

    Bundle extras = getIntent().getExtras();
    int score = extras.getInt("score");

    quit.setOnClickListener(new View.OnClickListener() {

        String strName = userName.getText().toString();

        @Override
        public void onClick(View v) {
            saveProgress(strName + ", " + score, "results.txt");
            finish();
            System.exit(0);
        }
    });
}

但它仍会返回empty, whatever score is。例如, 4

我读过这篇文章,建议它应该在onClickListener里面,它是: EditText getText().toString() not working

这是我的saveProgress课程:

public void saveProgress(String contents, String fileName) {

    try {
        File fp = new File(this.getFilesDir(), fileName);
        FileWriter out = new FileWriter(fp);
        out.append(contents);
        out.append("\n\r");
        out.close();
    }

    catch (IOException e) {
        Log.d("Me","file error:" + e);
    }
}

2 个答案:

答案 0 :(得分:1)

使用以下内容更改onClick()方法:

public void addListenerToEndButton() {
  quit = (Button) findViewById(R.id.endBtn);
  userName = (EditText) findViewById(R.id.userName);

  Bundle extras = getIntent().getExtras();
  int score = extras.getInt("score");

  quit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String strName = userName.getText().toString();
        saveProgress(strName + ", " + score, "results.txt");
        finish();
        System.exit(0);
    }
  });
}

调用,初始化,操作,exc应该进入侦听器的onClick方法。仅在单击按钮时才会触发onClickonClick之外但Listener内的所有内容都会在Listener初始化

上调用

答案 1 :(得分:0)

我猜你明白了onClickListener'错误。你正在做的是你在创建监听器时阅读strName,但我想你想在点击quit时阅读它。

所以只需将行移动到函数中,值就会正确。

public void addListenerToEndButton() {

    quit = (Button) findViewById(R.id.endBtn);
    userName = (EditText) findViewById(R.id.userName);

    quit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String strName = userName.getText().toString();
            saveProgress(strName + ", " + 6, "results.txt");
            finish();
            System.exit(0);
        }
    });
}