我正在编写一个从用户那里获取输入的代码,然后用户点击"输入另一个活动"按钮或"完成"按钮。我目前正在使用enterAnotherButton onClickListener中的信息,但我需要能够将信息传输到doneButton onClickListener以通过intent发送到另一个Activity。这是我目前的代码:
public class EnterCourseActivity extends ActionBarActivity {
private MainActivity ma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_course);
buttonClick();
}
public void buttonClick () {
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
int i = 1;
public void onClick(View view) {
EditText courseName;
courseName = (EditText) findViewById(R.id.inputCourseName);
String courseNameString = courseName.getText().toString();
String[] courses = new String[i];
courses[i - 1] = courseNameString;
i++;
courseName.setText("");
}
});
Button doneButton = (Button) findViewById(R.id.doneButton);
doneButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
}
});
//when user clicks doneButton execute this
ArrayList<String> coursesArrayList = new ArrayList<String>(Arrays.asList(courses));
Intent i = new Intent(EnterCourseActivity.this, MainActivity.class);
i.putStringArrayListExtra("course", coursesArrayList);
startActivity(i);
}
答案 0 :(得分:1)
正如@feantury建议的那样,只需创建一个类来存放您正在保存的信息。然后,您可以在doneButton单击时访问同一个对象。
public void buttonClick () {
final SampleObj obj = new SampleObj("test");
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
int i = 1;
public void onClick(View view) {
obj.courseName = "test1";
}
});
Button doneButton = (Button) findViewById(R.id.doneButton);
doneButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Log.d(TAG, "Result of obj: " + obj.courseName);
}
});
}
class SampleObj {
String courseName;
public SampleObj(String courseName) {
this.courseName = courseName;
}
}
单击enterAnotherButton将obj.courseName更改为“test1”,然后可以在onButton on onButton中访问它。
答案 1 :(得分:0)
那里真的很复杂。只需创建一个class属性来存储您的活动状态值。属性可以在匿名类之间共享,例如您为onClick
事件创建的类。
答案 2 :(得分:0)
我希望我能正确理解这个问题,但这就是我要做的事情:
public class EnterCourseActivity extends ActionBarActivity {
private ArrayList<String> courses;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_course);
courses = new ArrayList<String>();
buttonClick();
}
public void buttonClick () {
final EditText courseName;
courseName = (EditText) findViewById(R.id.inputCourseName);
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String courseNameString = courseName.getText().toString();
courses.add(courseNameString);
courseName.setText("");
}
});
Button doneButton = (Button) findViewById(R.id.doneButton);
doneButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
Intent i = new Intent(EnterCourseActivity.this, MainActivity.class);
i.putStringArrayListExtra("courses", courses);
startActivity(i);
}
});
}
}
因此,无需创建String[]
数组,然后每次添加新项目时重新创建它,只需从开始创建ArrayList<String>
并在每次用户想要添加时调用.add(course)
一门新课程。
没有理由在EditText courseName = (EditText) findViewById(R.id.inputCourseName);
内拨打View.OnClickListener()
,因为您只需要找一次,而不是每次添加新课程。
在完成按钮中,只需启动活动并传递courses
ArrayList
,现在也没有理由拨打ArrayList<String> coursesArrayList = new ArrayList<String>(Arrays.asList(courses));
。