Android中无法获取EditText中输入的值
开门见山:
获取EditText文本框中输入的值(而不是写死的),需要考虑两个问题:
(1) 取值,要在赋值之后。
简单举例:
onCreate(){
…………(a)
…………(b)
…………(c)
button.setOnClickListener(newOnClickListener()
{ …(d)…
…实现页面跳转…
});
}
详述:如上过程,在(a)(b)(c),这3处都不能取到文本框中刚输入的值;原因是,程序在这3处的执行速度是极快的,还没等你输入,就已经结束了。而只有到了(d)处,才能保证你对界面的操作已经结束,这时,获取输入的内容,才是完整的。
(2) 抓取和索要,需要在同一setContentview()下进行。
事有缘由:(错误示例)
<pre name="code" class="java"> public class MainActivity extends ActionBarActivity {
TextView phone_TextView;
private Button button = null;
String phoneText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 本来对应的布局文件
button = (Button) findViewById(R.id.requestBtn);
button.setOnClickListener(listener); // 设置监听
}
/*
* 监听
*/
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View arg0) {
String phoneText = requestPhone(); //调用【方法F】获取文本框内容
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
// 将验证码 传到另一个Activity,用于测试
intent.putExtra("head", phoneText);
startActivity(intent);
}
};
/*
* 【方法F】获取、返回 输入框中的数据
*/
private String requestPhone(){
String phoneText;
TextView phone_TextView;
setContentView(R.layout.activity_main);
// 指定输入框
phone_TextView = (TextView)findViewById(R.id.inputText);
// 取出内容
phoneText = phone_TextView.getText().toString();
// 返回数据
return phoneText;
}
成功典型:(改正后)
<pre name="code" class="java"> public class MainActivity extends ActionBarActivity {
TextView phone_TextView;
private Button button = null;
String phoneText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 加载布局文件
button = (Button) findViewById(R.id.requestBtn);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 指定控件
phone_TextView = (TextView)findViewById(R.id.inputText);
// 获取控件的值
phoneText = phone_TextView.getText().toString();
Intent intent = new Intent();
// Activity关联
intent.setClass(MainActivity.this, OtherActivity.class);
// 向Intent中存数据
intent.putExtra("phoneText", phoneText);
startActivity(intent);
}
});
}
}
前段时间对Android进行了粗略地学习,那只是一个小小的开启。现抽时间整理整理遇到的问题,自身的认识和感受。