2016-07-27 2 views
1

내 코드를 찾고 있었고, 난 코드에서 위젯의 참조지고 적어도 3 가지 방법이 있다는 것을 깨달았다Android에서 위젯 값을 어떻게 설정해야합니까?

먼저 하나 (에서 onCreate 전) :

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

두 번째는 (에서 onCreate에서) :

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

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

셋째 온 (아웃 만들고하지 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 내에 있지는 않습니다.

초는 인스턴스화되지만 최종 값은 상수가되므로 값을 변경할 수 없습니다.

셋째, onCreate에서 인스턴스화 될 전역 변수이므로 코드의 다른 부분에서 사용할 수 있습니다.

0

findViewById()으로 전화해야하는 경우 전화는 setContentView 이후이어야합니다. 그 전에는 첫 번째 옵션처럼. 세 번째 옵션은 인스턴스 변수를 만듭니다. 클래스 전체에서 텍스트 뷰에 많이 액세스 할 수있는 경우에만 사용하고 그렇지 않으면 findViewById을 호출하면됩니다.

1

으로 전화하기 전에 반드시 으로 전화해야합니다. 따라서 첫 번째 방법은 null입니다. 두 번째와 세 번째는 final 키워드를 제외하고는 동일하지만, 이것은 Java feature이며 안드로이드는 아닙니다.