繁体   English   中英

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

[英]Can't call an initializer method in Android Studio

我试图调用方法fillList()来填充ArrayList 但是它说

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

无效的方法虽然不需要返回类型。 我的学期班仅包含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());
    }
}
  • 您应该在onCreate方法中调用fillList方法。
  • 添加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·方法,该方法必须在活动生命周期方法内。

您正在类的声明部分中调用方法。 除非它返回一些值并且您将其分配给变量之一,否则您将无法执行此操作。

要使用返回类型为void的方法进行调用,或者不使用返回值而直接调用方法,则应在诸如onCreate其他方法中调用它

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

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

另外,只有在调用setContentView方法之后,才能调用findViewById方法。

因此在onCreate内,使用:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spin = findViewById(R.id.spinner);
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());
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM