2016-12-12 11 views
0

userNameを保存しようとしていますが、保存されたテキストファイルは常に, 6を返します。 EditTextに入力されたuserNameの値とそれ以外の値を表示するにはどうすればよいですか?例えば、Don, 6。私はあなたがgetText()を使用しなければならないと読んだが、それは保存されたファイルに何も戻っていない。getText()。toString()が機能しない、空を返します

ただし、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); 
    } 
} 
+0

onclickメソッドの外でedittextのテキストを取得することは問題ではありませんか?あなたの中にそれを移動してみてください –

答えて

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リスナーのメソッド。 onClickはすべてListener初期

+0

ありがとう、そのような簡単な見落としています。私は今それを理解する。私はこれが疑問の範囲外だと知っていますが、そのテキストファイルに新しい行を追加するのではなく、ファイルを上書きする理由は何ですか?私は 'saveProgress'クラスでそれを試みました。 – kamil1995b

+0

@ kamil1995b正直なところ私は分かりませんが、[this link](http://stackoverflow.com/questions/4542318/android-append-text-file)を見てみることをお勧めします:) –

0

私はあなたが間違っている「onClickListenerの内側に」理解推測する上で呼び出されたonClick外であるが、Listenerの内側に、ボタンがクリックされたときにのみ起動されます。 atmで何をしているのかは、リスナーを作成するときに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); 
     } 
    }); 
} 
関連する問題