2014-09-10 3 views
-2

Я пробовал это, но значение строки uname всегда остается равным нулю.Могу ли я инициализировать окончательную строку динамически в Android?

EditText username = (EditText)findViewById(R.ID.newusername); 
final String uname=username.getText().toString(); 

Есть ли решение?

+0

И каков результат username.getText() –

+1

, вы уверены, что есть что-то в этом 'EditText'? – suitianshi

+0

значение, которое я ввел в текстовое поле редактирования. –

ответ

1

Я бы объявить его следующим образом:

final String uname; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity); 

    EditText username = (EditText)findViewById(R.id.newusername); 
    uname = username.getText().toString(); 
} 

ли эта помощь?

+0

вы бы так любезны, чтобы поддержать мой ответ, если это помогло? спасибо :) –

+0

он решил мою проблему. но у меня недостаточно репутации для голосования. :( –

+0

вам нужно найти свою область знаний и ответить на некоторые вопросы, чтобы ваша репутация увеличилась. –

2

Вы должны положить что-то в editText, прежде чем пытаться прочитать его значение, иначе оно всегда будет равно нулю. Кроме того, это R.id ... нижний регистр.

От Java кода:

username.setText("testestestest"); 
uname = username.getText().toString(); 

В коде XML:

<EditText 
android:text="Default username"/> 

В качестве альтернативы, добавить слушателя к нему, и читать вход внутри слушателя.

username.addTextChangedListener(new TextWatcher() {     
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    if(s!=null && s.length() > 0){ 
     //do stuff 
    }       
    }     
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    }      
    @Override 
    public void afterTextChanged(Editable s) {      
    } 
}); 

Теперь это не будет null.

+0

большое вам спасибо –

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