Android中无法获取EditText中输入的值

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进行了粗略地学习,那只是一个小小的开启。现抽时间整理整理遇到的问题,自身的认识和感受。

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值