传值有关问题,求高手解释
传值问题,求高手解释
package com.example.my03activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class My03MainActivity extends Activity {
private EditText editText1 ;
private EditText editText2 ;
private TextView textView1 ;
private Button button1 ;
private String editText1_value1;
private String editText2_value2;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my03_main);
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
textView1 = (TextView) findViewById(R.id.textView1);
button1 = (Button)findViewById(R.id.button1);
/*editText1_value1 = editText1.getText().toString();
editText2_value2 = editText2.getText().toString();在这里赋值就不能实现传值,求高手解释哈*/
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
editText1_value1 = editText1.getText().toString();
editText2_value2 = editText2.getText().toString();
intent.putExtra("yi", editText1_value1);
intent.putExtra("er", editText2_value2);
intent.setClass(My03MainActivity.this, OtherActivity.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_my03_main, menu);
return true;
}
}
------解决方案--------------------
组件在刚初始时,无法获得组件的参数,包括组件的值,解决办法,通过延时处理
将
editText2_value2 = editText2.getText().toString();
替换为:
package com.example.my03activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class My03MainActivity extends Activity {
private EditText editText1 ;
private EditText editText2 ;
private TextView textView1 ;
private Button button1 ;
private String editText1_value1;
private String editText2_value2;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my03_main);
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
textView1 = (TextView) findViewById(R.id.textView1);
button1 = (Button)findViewById(R.id.button1);
/*editText1_value1 = editText1.getText().toString();
editText2_value2 = editText2.getText().toString();在这里赋值就不能实现传值,求高手解释哈*/
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
editText1_value1 = editText1.getText().toString();
editText2_value2 = editText2.getText().toString();
intent.putExtra("yi", editText1_value1);
intent.putExtra("er", editText2_value2);
intent.setClass(My03MainActivity.this, OtherActivity.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_my03_main, menu);
return true;
}
}
------解决方案--------------------
组件在刚初始时,无法获得组件的参数,包括组件的值,解决办法,通过延时处理
将
editText2_value2 = editText2.getText().toString();
替换为:
- Java code
new Thread() { @Override public void run() { synchronized(this) { try { wait(1000); //1秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } editText2_value2 = editText2.getText().toString(); } }.start();