Дело не в том, что вы не можете объявить Intent
таким образом, а в том, что вы ничего не можете объявить таким образом.
В Java вы можете объявить экземпляр следующим образом:
private Intent hauptmenu; //Needs to be initialized later
или
//Declares and initializes
private Intent hauptmenu = new Intent(this, com.stw.myapplication.Hauptmenu.class);
Это обычный вам знакомый подход.
Однако вы не можете объявлять и инициализировать так, как хотите:
private Intent hauptmenu;
hauptmenu = new Intent (this, com.stw.myapplication.Hauptmenu.class);
Это потому, что hauptmenu = new Intent (this, com.stw.myapplication.Hauptmenu.class);
является оператором , и обычные операторы могут 'работать вне блока операторов, такого как блок методов.
Блок обозначен фигурными скобками {}.
Поэтому, если вы хотите инициализировать объект за пределами Конструктора или Метода, вы должны поместить код в Блок, известный как Блок Инициализатора, например:
private Intent hauptmenu;
{
hauptmenu = new Intent(this, com.stw.myapplication.Hauptmenu.class);
Log.i(TAG, "Created an Intent");
}
С ИнициализаторомБлоки, вы даже можете запускать другие типы кода (показано на моем примере регистрации моего создания Intent) .Это то, что вы не можете сделать при инициализации переменных во время объявления, вне преднамеренного создания для этого метода .
Поэтому, чтобы ответить на ваш вопрос, вы не можете объявить Intent
так, как вы хотели, потому что Java не допускает операторов, , отличных от операторов объявлений , внеБлок.
Итак, если вы хотите создать свое намерение так, как вы хотите, вам просто нужно добавить фигурные скобки вокруг вашего утверждения.Это приведет к тому, что ваш инициализирующий оператор окажется внутри блока инициализатора, что позволит выполнить его.