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

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页