无法在Android Studio中调用初始化方法

时间:2017-11-01 03:15:29

标签: java android

我正在尝试调用方法fillList()来填充ArrayList。但它说

  

无效的方法声明,需要返回类型。

void的方法虽然不需要返回类型。我只有Seterster课程包含了setter和getter。

public class MainActivity extends AppCompatActivity {
    List<String> termList = new ArrayList<>();
    fillList();
    //Spinner
    Spinner spin = findViewById(R.id.spinner);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    private void fillList(){
        termList.clear();
        //Create term and fill into arraylist
        Semester x = new Semester();
        x.setSemester("Fall");
        termList.add(x.getSemester());
        x = new Semester();
        x.setSemester("Winter");
        termList.add(x.getSemester());
        x = new Semester();
        x.setSemester("Spring");
        termList.add(x.getSemester());
    }
}

3 个答案:

答案 0 :(得分:1)

  • 您应该在fillList方法中调用onCreate方法。
  • 添加findViewById应在setContentView之后致电。并且必须在创建Activity时使用。

所以改为这个。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fillList();
    Spinner spin = findViewById(R.id.spinner);
}

注意

  • 全局变量可以直接在类中使用,但该方法必须在方法中使用

  • 创建活动后必须使用·findViewById·方法,并且必须在活动生命周期方法中。

答案 1 :(得分:0)

您正在课程的声明部分中调用方法。你不能这样做,除非它返回一些值并且你将它分配给你的一个变量。

要调用具有void返回类型的方法或只调用方法而不使用其返回值,您应该在另一个方法(如onCreate

中调用它

或者您可以使用初始化程序块!

public class MainActivity extends AppCompatActivity {
List< String > termList = new ArrayList<>();
Spinner spin;
{
    fillList();
}
//other declarations and methods.

此外,只有在调用方法findViewById

后才能调用方法setContentView

所以在onCreate中,使用:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spin = findViewById(R.id.spinner);

答案 2 :(得分:0)

public class MainActivity extends AppCompatActivity {
    List<String> termList;
    Spinner spin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        termList = new ArrayList<>();
        spin = findViewById(R.id.spinner);
        fillList();
    }



    private void fillList(){
        termList.clear();
        //Create term and fill into arraylist
        Semester x = new Semester();
        x.setSemester("Fall");
        termList.add(x.getSemester());
        x = new Semester();
        x.setSemester("Winter");
        termList.add(x.getSemester());
        x = new Semester();
        x.setSemester("Spring");
        termList.add(x.getSemester());
    }

}