-3

Ich bin mit einem seltsamen Fehler konfrontiert: unerwartetes Ende der Deklaration. Und ich bin mir sehr sicher, dass es keinen Tippfehler gibt. Bitte helfen Sie.unerwartetes Ende der Deklaration für Klassenvariable

package test.anyname; 
import android.app.*; 
import android.os.*; 

public class MainActivity extends Activity { 
    boolean ty= true; 
    ty= false;  // Error occurred at this line 
    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 
+4

Die Anweisung "ty = false;" muss sich in einer Methode befinden. – Eran

+0

@Eran Warum muss "ty = false" in einer Methode sein? – D5fgj

+1

Wenn Sie möchten, dass ty "falsch" ist, warum sollten Sie mit "true" initialisieren, oder können Sie den Wert von ty in onCreate() auf "false" ändern –

Antwort

1

Die einzigen Dinge, die Sie direkt in einer Klasse Körper schreiben können, sind:

  • Felddeklarationen (zB boolean ty= true;)
  • Methode Erklärungen (zB @Override protected void onCreate(Bundle savedInstanceState) { ... })
  • Konstrukteurs
  • Erklärungen von verschachtelten Schnittstellen und Klassen
  • Statische und Instanz initialisieren rs

ty = false; ist eine Zuordnung, die keine von diesen ist, so ist es nicht erlaubt.

+0

Wie wäre es mit 'Cursor cursor = cursorLoader.loadInBackground();'? Weil es ohne Fehler ausgeführt werden kann – D5fgj

+0

Das ist eine Felddeklaration mit einem Initialisierer. –

2

Sie können eine Variable nur einmal initialisieren, und Sie können diese Variable außerhalb einer Methode nicht noch einmal ändern. Dann sollten Sie dies in einer Methode tun.

package test.anyname; 
import android.app.*; 
import android.os.*; 

public class MainActivity extends Activity { 
    boolean ty = false; // you can initialize only once 

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

    void changeTy() { 
     ty = !ty; 
    } 
}  
+0

Ein paar Punkte (und ich bin meistens nitpicking): 1) Sie können eine Variable tatsächlich mehrfach initialisieren: 'boolean ty = ty = ty = false;' ist (vielleicht überraschend) legal; 2) Sie können die Variable in einem Instanzinitialisierer ändern (z. B. 'boolean ty = false; {ty = true;}'), was keine Methode ist. –

+0

Danke @AndyTurner. –

Verwandte Themen