2013-06-13 5 views
0

Я пытаюсь получить значение в EditText и хранить его на общих предпочтениях, я это сделал:EditText создаются динамически: GetText() не возвращает значение

SharedPreferences participant; 
    Editor editor; 
    private EditText firstname = null; 
    private String name =null; 
    private LinearLayout formbis; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_participant); 

     participant = this.getSharedPreferences("participant", getBaseContext().MODE_PRIVATE); 
     editor = participant.edit(); 


     formbis = (LinearLayout) findViewById(R.id.formbis); 



     firstname = new EditText(this); 
     firstname.setHint("first name"); 
     firstname.setTextSize(12); 
     firstname.setLayoutParams(new LayoutParams(
       LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
     name = firstname.getText().toString(); 
     editor.putString("key", name); 
     editor.commit(); 

     formbis.addView(firstname); 

Но когда я открываю sharedPreferences XML-файл я только найти это: нет значения от EditText:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<string name="key"></string> 
</map> 

ответ

2

Вам нужно добавить слушатель в EditText и затем зафиксируйте значение, когда пользователь вводит какой-либо текст.

2

getText возвращает результат предыдущего setText. Позвоните по телефону firstname.setText("your string").

В фрагменте, который вы предоставили пользователю, некогда вводить текст. Когда вы вызываете фиксацию, вы опаздываете. Вы можете, например, иметь кнопку «Подтвердить» и при нажатии на него, в его onClick вызова совершают на вашем EditText, или вы можете реализующий TextWatcher

private class MyTextWather implements TextWatcher { 


    @Override 
    public void afterTextChanged(Editable s) { 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 
     // it is called every time you put something inside your edittext 

} 
+0

, так что я должен сделать, чтобы вернуть значение введенного пользователем текста? – kyokotsu

+0

в фрагменте, который вы предоставляете пользователю, не успевает ввести текст. Когда вы вызываете фиксацию, вы опаздываете. Например, у вас может быть кнопка подтверждения, и когда вы нажмете на нее, в ее фиксации вызова onClick на своем edittext или вы сможете реализовать TextWatcher – Blackbelt

+0

Можете ли вы дать мне больше объяснений, пожалуйста (я новичок), должен Я использую какой-то слушатель? – kyokotsu

Смежные вопросы