2016-07-27 6 views
1

私は私のコードを見ていたと私はコード内のウィジェットの参照を得るための少なくとも3つの方法があることに気づい:(のonCreate前)Androidでウィジェットの値を設定するにはどうすればよいですか?

まず1:(のonCreate中)

private TextView textView= (TextView) findViewById(R.id.textView); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_layout); 
    } 

2つ目は:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_layout); 

     final TextView textView= (TextView) findViewById(R.id.textView); 
    } 

第1(アウト作成とのonCreateに設定):

private TextView textView; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main_layout); 

      textView= (TextView) findViewById(R.id.textView); 
     } 

この3つの方法の違いは何ですか?いつそれらを使うべきですか?

答えて

0

最初は、ウィジェットが実際にインスタンス化されることを保証しません。そのウィジェットは、onCreate内にはありません。

秒はインスタンス化されますが、その値は最終的に定数になるため変更できません。

第3に、onCreateでインスタンス化されるグローバル変数であり、コードの他の部分でも使用できます。

0

findViewById()に電話をする必要がある場合は、setContentViewの後にコールする必要があります。あなたの最初の選択肢のようなものではありません。 3番目のオプションはインスタンス変数を作成し、クラス全体でテキストビューに多くのアクセスがある場合にのみ使用します。そうでない場合は、必要に応じてfindViewByIdに電話してください。

1

setContentView()に電話する前にfindViewById()に電話する必要があります。したがって、第1の方法ではnullと表示されます。 2番目と3番目はfinalキーワードを除いて同じですが、これはJava featureで、Androidのものではありません。

関連する問題