2013-06-10 4 views
3

java/android에서 코딩을 시작했습니다. 오늘 총 바보가된다면 저를 변명하십시오.어디서나 사용할 수 있도록 TextView 변수를 선언하려면 어떻게해야합니까?

저는 지난 한 시간 동안이 문제에 직면 해 왔습니다. Google에 시도했지만 답을 찾을 수 없었습니다.

"variablename"을 입력하여 간단하게 액세스 할 수 있도록 TextView를 정적/변수로 선언하는 방법은 무엇입니까? 내 코드 어디서나?

다른 활동에서 TextView에 액세스하려고하지 않습니다. 모두 동일한 항목에 있습니다.

이 내 코드 (mainactivity.java의 모든) 모습입니다 :

public class MainActivity extends Activity { 

    TextView test = (TextView)findViewById(R.id.textView2); 

    public void registermessage(View view) { 
     test.setText("Test"); 
    } 
} 

이 이클립스에서 오류를 제공하지 않습니다하지만 난 내 휴대 전화에서 실행하려고 할 때 단순히 강제 종료됩니다.

필자가 테스트를 public void로 textview로 선언 할 때 성공할 수 있지만 액티비티의 void에서 변수 테스트를 사용할 수 있기를 원합니다.

감사합니다.

+0

은 우리에게 전체 코드를 보여줍니다. 활동에 컨텐츠를 설정하지 않았습니다. 그래서 찾을 수 없습니다. – Raghunandan

답변

6

setcontentView 메서드가 호출 된 후에 변수를 인스턴스화해야합니다. 그래서 당신은 다음을 수행해야합니다 :

공용 클래스 MainActivity가 활동을 확장 {

TextView test; 

@Override 
onCreate(Bundle s){ 
    ... 
    setContentView(R.layout.yourLayout); 
    test = (TextView)findViewById(R.id.textView2); 
} 


public void registermessage(View view) { 

    test.setText("Test"); 
} 
+0

고마워요! 정확히 내가 필요로하는 것. –

2

활동의 변수로 선언하고 setContentView()을 호출 한 후 초기화하십시오. TextView의 텍스트를 설정하는 경우 함수에 View 매개 변수를 전달할 필요가 없습니다.

public class MainActivity extends Activity { 

    private TextView test; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_launch); 
     test = (TextView)findViewById(R.id.textView2); 
     registermessage(); 
    } 

    public void registermessage() {  
     test.setText("Test"); 
    } 
관련 문제