This question already has answers here:
Closed 6 months ago.
I am working on Android project and I am getting an error which I cannot understand:
Array initializer is not allowed here
I tried to simplify my code and it comes down to this
public class MainActivity extends Activity{
int pos = {0, 1, 2};
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pos = {2, 1, 0};
}
}
What is going on here?
You should use
pos = new int[]{1,2,3};
You can only use the abbreviated syntax int[] pos = {0,1,2};
at variable initialization time.
private int[] values1 = new int[]{1,2,3,4};
private int[] values2 = {1,2,3,4}; // short form is allowed only at variable initialization
Your initialization statement is wrong: you must add square brackets to declare an array (and here you can omit the new
keyword because you're declaring and initializing the variable at the same time):
int[] pos = { 0, 1, 2 };
In the onCreate
method, you can't omit the new
keyword because the variable was already declared, so you have to write:
pos = new int[] { 2, 1, 0 };
You can read the Oracle documentation and the Java Language Specs for more details.
use the following syntax to declare/initialize and empty array, and then populated it with data:
String[] menuArray = {};
menuArray = new String[]{"new item","item 2"};
This is a compile-time error Illegal Initializer for int.
You could solve this problem by adding square braces after your variable's data type like this:
int[] pos = {0, 1, 2};