-3

私は奇妙なエラーに直面しています:予期しない宣言の終わりです。そして、私はtypoがないと確信しています。助けてください。予期せぬクラス変数の宣言の末尾

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

'ty = false;'ステートメントは、何らかのメソッドの内側にある必要があります。 – Eran

+0

@Eranなぜメソッド内に 'ty = false;'が必要ですか? – D5fgj

+1

tyを "false"にしたいのであれば、 "true"で初期化するか、onCreate()内の値を "false"に変更する必要があります。 –

答えて

1

あなたはクラス本体の内部で直接書き込むことができる唯一のものは、次のとおりです。

  • フィールド宣言(例えばboolean ty= true;
  • メソッド宣言(例えば@Override protected void onCreate(Bundle savedInstanceState) { ... }
  • コンストラクタ
  • 宣言ネストされたインターフェイスとクラスの一覧
  • スタティックとインスタンスの初期化rs

ty = false;は割り当てられていないため、許可されていません。

+0

'Cursor cursor = cursorLoader.loadInBackground();'のようなものはどうですか?エラーなしで実行できるので、 – D5fgj

+0

これはイニシャライザ付きのフィールド宣言です。 –

2

変数を一度しか初期化することはできません。この変数を何らかの方法の外で再び変更することはできません。それでは、これをメソッドで行う必要があります。

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

2つのポイント(そして私はほとんどがニックピッキングしています):1)実際に変数を複数回初期化することができます: 'boolean ty = ty = ty = false;'(おそらく驚くほど)合法です。 2)インスタンスイニシャライザの変数を変更することができます(例えば 'boolean ty = false; {ty = true;}')。これはメソッドではありません。 –

+0

ありがとう@AndyTurner。 –

関連する問題