2016-03-19 16 views
1

にビューidを見つける:私はインクリメントでこれを置くたび次のサンプルを考えるとAndroidの

TextView quantity = (TextView) findViewById(R.id.quantity_text_view); 

:私はちょうど方法、外のコード行を使用することはできませんなぜ

public class MainActivity extends ActionBarActivity { 

    int numberOfQuantity=0; 

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


    } 
TextView quantity = (TextView) findViewById(R.id.quantity_text_view); 

    public void Increment(View view) { 

     numberOfQuantity++; 
     quantity.setText("" + numberOfQuantity); 
    } 

    public void Decrement(View view){ 
     numberOfQuantity--; 
     quantity.setText("" + numberOfQuantity); 
    } 
} 

デクリメント方法は機能しません。

答えて

4

メソッドの外側(つまり、クラス自体の宣言)に置かれたステートメントは、オブジェクト構築の段階で実行されます。アクティビティはまだレイアウトにバインドされておらず、それに関連付けられたビューはありません。だから、findViewByID()は何も見つけることができません。 onCreate()で呼び出されるsetContentView()の後でのみ呼び出す必要があります。

+0

感謝をしてみてください、私が何をしたか、私は今の問題は、それが理由であるデクリメントしないで、のonCreateメソッドの後にそれを置くのですか? –

+0

これらのIncrement()およびDecrement()はどのように呼び出されますか?おそらく、彼らはいくつかのUIイベント(マウスクリックなど)のハンドラですか?もしそうなら、イベントにこれらのメソッドをバインドする方法を示すことができますか? –

+1

私はすでに修正しました。別のビューにonclickと入力しました。 –

1

setContentView(R.layout.activity_main);あなたのレイアウトを膨張させています。 DOMを作成し、すべてのクラスを初期化し、IDなどを割り当てます。

レイアウトが一旦膨張したら、View#findViewById()を呼び出すことができます。

Javaでは、代入は文であり、文はコードのブロック(メソッド、コンストラクタ、静的初期化子など)内でのみ使用できます。 宣言のみがこれらの外部で許可されます。

1

メソッドの外でfindViewbyId()を呼び出すことに関しては、他の答えが非常にうまく説明されます。

あなたの必要性のための

、この

int numberOfQuantity=0; 
TextView quantity; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    quantity = (TextView) findViewById(R.id.quantity_text_view); 

} 


public void Increment(View view) { 
    numberOfQuantity++; 
    quantity.setText(String.valueOf(numberOfQuantity)); 
} 

public void Decrement(View view){ 
    numberOfQuantity--; 
    quantity.setText(String.valueOf(numberOfQuantity)); 
} 
} 
+0

@Josel Parayno、あなたの問題は修正されましたか? –

関連する問題