我想实现一个注册的Activity将各控件信息用数组传递到另一个Activity,然后用TextView显示,可是我跳过去就弹错啊。
具体代码 注册Activity
public class RegisterActivity extends Activity {
private EditText userEditText,pwdEditText;
private RadioButton maleRadioButton,femaleRadioButton;
private ToggleButton tlbtn;
private CheckBox footCheck,basketCheck,baseCheck;
private Spinner sp;
private Button btn1,btn2;
List list = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
userEditText=(EditText)findViewById(R.id.user_editText1);
pwdEditText=(EditText)findViewById(R.id.pwd_editText1);
maleRadioButton=(RadioButton)findViewById(R.id.male_radioButton1);
femaleRadioButton=(RadioButton)findViewById(R.id.female_radioButton2);
footCheck=(CheckBox)findViewById(R.id.football_checkBox1);
basketCheck=(CheckBox)findViewById(R.id.basketball_checkBox2);
baseCheck=(CheckBox)findViewById(R.id.baseball_checkBox3);
tlbtn=(ToggleButton)findViewById(R.id.toggleButton1);
sp=(Spinner)findViewById(R.id.spinner1);
String [] positions ={"程序员","测试员","经理"};
ArrayAdapter<String> aad= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,positions);
sp.setAdapter(aad);
btn1=(Button)findViewById(R.id.resign_button);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putStringArrayListExtra("aa",(ArrayList<String>) list);
intent.setClass(RegisterActivity.this, showInformation.class);
startActivity(intent);
}
});
}
void register()
{
String username=userEditText.getText().toString();
String password=pwdEditText.getText().toString();
list.add(username);
list.add(password);
String gender="";
if(maleRadioButton.isChecked())
{
gender="男";
}
else
{
gender="女";
}
list.add(gender);
String hobby="";
if(footCheck.isChecked())
{
hobby+="足球,";
}
else if(basketCheck.isChecked())
{
hobby+="篮球,";
}
else {
hobby+="排球";
}
list.add(hobby);
String married ="";
if(tlbtn.isChecked())
{
married="已婚";
}
else{
married="未婚";
}
list.add(married);
String position=sp.getSelectedItem().toString();
list.add(position);
}
}显示的Activity public class showInformation extends Activity{
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.information);
tv=(TextView)findViewById(R.id.show_textView1);
Intent intent = getIntent();
ArrayList<String> lt = new ArrayList<String>();
lt=intent.getExtras().getStringArrayList("aa");
tv.setText(lt.get(0)+"\n"+lt.get(1)+"\n"+lt.get(2)+"\n"+lt.get(3)+"\n"+lt.get(4)+"\n"+lt.get(5)+"\n"+lt.get(6));
}
}
具体代码 注册Activity
public class RegisterActivity extends Activity {
private EditText userEditText,pwdEditText;
private RadioButton maleRadioButton,femaleRadioButton;
private ToggleButton tlbtn;
private CheckBox footCheck,basketCheck,baseCheck;
private Spinner sp;
private Button btn1,btn2;
List list = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
userEditText=(EditText)findViewById(R.id.user_editText1);
pwdEditText=(EditText)findViewById(R.id.pwd_editText1);
maleRadioButton=(RadioButton)findViewById(R.id.male_radioButton1);
femaleRadioButton=(RadioButton)findViewById(R.id.female_radioButton2);
footCheck=(CheckBox)findViewById(R.id.football_checkBox1);
basketCheck=(CheckBox)findViewById(R.id.basketball_checkBox2);
baseCheck=(CheckBox)findViewById(R.id.baseball_checkBox3);
tlbtn=(ToggleButton)findViewById(R.id.toggleButton1);
sp=(Spinner)findViewById(R.id.spinner1);
String [] positions ={"程序员","测试员","经理"};
ArrayAdapter<String> aad= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,positions);
sp.setAdapter(aad);
btn1=(Button)findViewById(R.id.resign_button);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putStringArrayListExtra("aa",(ArrayList<String>) list);
intent.setClass(RegisterActivity.this, showInformation.class);
startActivity(intent);
}
});
}
void register()
{
String username=userEditText.getText().toString();
String password=pwdEditText.getText().toString();
list.add(username);
list.add(password);
String gender="";
if(maleRadioButton.isChecked())
{
gender="男";
}
else
{
gender="女";
}
list.add(gender);
String hobby="";
if(footCheck.isChecked())
{
hobby+="足球,";
}
else if(basketCheck.isChecked())
{
hobby+="篮球,";
}
else {
hobby+="排球";
}
list.add(hobby);
String married ="";
if(tlbtn.isChecked())
{
married="已婚";
}
else{
married="未婚";
}
list.add(married);
String position=sp.getSelectedItem().toString();
list.add(position);
}
}显示的Activity public class showInformation extends Activity{
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.information);
tv=(TextView)findViewById(R.id.show_textView1);
Intent intent = getIntent();
ArrayList<String> lt = new ArrayList<String>();
lt=intent.getExtras().getStringArrayList("aa");
tv.setText(lt.get(0)+"\n"+lt.get(1)+"\n"+lt.get(2)+"\n"+lt.get(3)+"\n"+lt.get(4)+"\n"+lt.get(5)+"\n"+lt.get(6));
}
}
不过不贴也没关系,我个人建议,不要使用这坑爹的intent传东西,直接建个单例,比如AppData,把数据,比如你这个例子中的,封装成一个叫 UserEntity的实例,然后AppData.getInstance().setUser(user),到了第二个acitivity,要使用的时候,再getUser(),这样多好。
搞什么inent,什么 extra,真是要多丑有多丑,还序列化?根本没这个必要