ArrayList 未初始化
ArrayList not Initialized
我正在尝试将数组列表从一个 class 导入另一个,但是 Android Studio 说它没有初始化。我将数组列表的信息存储在 CourseNameClass 中,以便可以在两个匿名 classes 之间共享这些信息。我让应用程序在单击一个按钮时获取信息,并在单击另一个按钮时切换到另一个 activity。我将如何解决这个问题?这是我的代码:
public class EnterCourseActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_course);
buttonClick();
}
public void buttonClick() {
final CourseNameClass courseNameShared = new CourseNameClass(" ");
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
EditText inputText = (EditText)findViewById(R.id.inputCourseName);
String courseNameString = inputText.getText().toString();
courseNameShared.courseNameInClass = courseNameString;
inputText.setText("");
}
});
Button doneButton = (Button) findViewById(R.id.doneButton);
doneButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
CourseNameClass coursesArrayListInClass;
Intent i = new Intent(EnterCourseActivity.this, MainActivity.class);
i.putStringArrayListExtra("course", coursesArrayListInClass);
startActivity(i);
}
});
}
class CourseNameClass{
String courseNameInClass;
public CourseNameClass(String courseNameInClass){
this.courseNameInClass = courseNameInClass;
ArrayList<String> coursesArrayListInClass = new ArrayList<String>();
coursesArrayListInClass.add(courseNameInClass);
}
}
public void buttonClick() {
final CourseNameClass courseNameShared = new CourseNameClass(" ");
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
EditText inputText = (EditText)findViewById(R.id.inputCourseName);
String courseNameString = inputText.getText().toString();
courseNameShared.courseNameInClass = courseNameString;
inputText.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("course", courseNameShared.getCoursesArrayList());
startActivity(i);
}
}
class CourseNameClass {
String courseNameInClass;
public CourseNameClass(String courseNameInClass){
this.courseNameInClass = courseNameInClass;
}
public ArrayList<String> getCoursesArrayList() {
ArrayList<String> coursesArrayListInClass = new ArrayList<String>();
coursesArrayListInClass.add(courseNameInClass);
return coursesArrayListInClass;
}
}
您在 CourseNameClass
构造函数中创建了 ArrayList<String> coursesArrayListInClass
,然后从不使用它。您在 OnClick()
方法中创建的 CourseNameClass coursesArrayListInClass;
是新的 CourseNameClass
对象,这是您未初始化的对象。但它不是 ArrayList
对象!您对不同的对象使用了相同的名称!
要使用 ArrayList<String> coursesArrayListInClass
,您可以在 CourseNameClass
中创建新方法:
class CourseNameClass{
String courseNameInClass;
ArrayList<String> coursesArrayListInClass;
public CourseNameClass(String courseNameInClass){
this.courseNameInClass = courseNameInClass;
coursesArrayListInClass = new ArrayList<String>();
coursesArrayListInClass.add(courseNameInClass);
}
public ArrayList<String> getArrayList(){
return coursesArrayListInClass;
}
}
我正在尝试将数组列表从一个 class 导入另一个,但是 Android Studio 说它没有初始化。我将数组列表的信息存储在 CourseNameClass 中,以便可以在两个匿名 classes 之间共享这些信息。我让应用程序在单击一个按钮时获取信息,并在单击另一个按钮时切换到另一个 activity。我将如何解决这个问题?这是我的代码:
public class EnterCourseActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_course);
buttonClick();
}
public void buttonClick() {
final CourseNameClass courseNameShared = new CourseNameClass(" ");
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
EditText inputText = (EditText)findViewById(R.id.inputCourseName);
String courseNameString = inputText.getText().toString();
courseNameShared.courseNameInClass = courseNameString;
inputText.setText("");
}
});
Button doneButton = (Button) findViewById(R.id.doneButton);
doneButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
CourseNameClass coursesArrayListInClass;
Intent i = new Intent(EnterCourseActivity.this, MainActivity.class);
i.putStringArrayListExtra("course", coursesArrayListInClass);
startActivity(i);
}
});
}
class CourseNameClass{
String courseNameInClass;
public CourseNameClass(String courseNameInClass){
this.courseNameInClass = courseNameInClass;
ArrayList<String> coursesArrayListInClass = new ArrayList<String>();
coursesArrayListInClass.add(courseNameInClass);
}
}
public void buttonClick() {
final CourseNameClass courseNameShared = new CourseNameClass(" ");
Button enterAnotherButton = (Button) findViewById(R.id.enterAnotherButton);
enterAnotherButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
EditText inputText = (EditText)findViewById(R.id.inputCourseName);
String courseNameString = inputText.getText().toString();
courseNameShared.courseNameInClass = courseNameString;
inputText.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("course", courseNameShared.getCoursesArrayList());
startActivity(i);
}
}
class CourseNameClass {
String courseNameInClass;
public CourseNameClass(String courseNameInClass){
this.courseNameInClass = courseNameInClass;
}
public ArrayList<String> getCoursesArrayList() {
ArrayList<String> coursesArrayListInClass = new ArrayList<String>();
coursesArrayListInClass.add(courseNameInClass);
return coursesArrayListInClass;
}
}
您在 CourseNameClass
构造函数中创建了 ArrayList<String> coursesArrayListInClass
,然后从不使用它。您在 OnClick()
方法中创建的 CourseNameClass coursesArrayListInClass;
是新的 CourseNameClass
对象,这是您未初始化的对象。但它不是 ArrayList
对象!您对不同的对象使用了相同的名称!
要使用 ArrayList<String> coursesArrayListInClass
,您可以在 CourseNameClass
中创建新方法:
class CourseNameClass{
String courseNameInClass;
ArrayList<String> coursesArrayListInClass;
public CourseNameClass(String courseNameInClass){
this.courseNameInClass = courseNameInClass;
coursesArrayListInClass = new ArrayList<String>();
coursesArrayListInClass.add(courseNameInClass);
}
public ArrayList<String> getArrayList(){
return coursesArrayListInClass;
}
}