2012-01-07 6 views
0
public class HelloWorldActivity extends Activity { 
    private TextView myText; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     myText = new TextView(this); 
     myText.setText("Hello World"); 
     Button btn1 = new Button(this); 
     btn1.setText("Click here mofo"); 
     btn1.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       changeText(); 

      } 
     }); 

     setContentView(myText); 
     setContentView(btn1); 
    } 


    public void changeText() 
    { 
     myText.setText("Changed"); 
    } 
} 
+0

텍스트가 변경됩니다. 당신이보기를 무효로하지 않기 때문에 그것을 볼 수 없습니다. 'changeText()'메소드에서'myText.setText ("Changed");'다음에'invalidate();'를 추가하십시오. 이것은 액티비티에 다시 그리기를 지시합니다. –

답변

0

당신은 안드로이드 로거를 사용하여 텍스트를 인쇄 할 수 있습니다 Log

Log.i(MY_TAG, "hello world"); 

당신은 로그 캣과 출력을 볼 수 있습니다. Eclipse를 사용하고 있다면 logcat보기를 열고 로그 태그를 필터링해야합니다.

활동 내에서 하나의 콘텐츠보기 만 있기 때문에 텍스트가 변경되지 않습니다.

setContentView(myText); // content view set to myText 
setContentView(btn1); // content view set to btn1, myText is no longer visible 

당신은 당신이 레이아웃을 사용할 필요가 btn1myText을 보여주고 싶어합니다. This은 레이아웃을 이해하는 데 도움이 될 수 있습니다. Log.i 또는 Lod.d 내 예를 들어 버튼에

로그 캣

출력을 제공 할 수 있습니다

+0

레이아웃이 분명히 사용되고 있습니다. 또한보기의 표시 속성을 변경하기 위해 다중 레이아웃이 필요하지 않습니다. 단순히 다시 그리기 만하면됩니다. 이것은 수동으로 또는 시스템에서 수행 할 수 있습니다. –

0

는 XML 파일에 정의되어 있습니다.

public class StackActivity extends Activity { 

    Button button1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     button1 = (Button) findViewById(R.id.button1); 
     button1.setText("Before"); 
     button1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Log.d("YOUR TAG", "Hey You Just Clicked Me!"); 
       button1.setText("After"); 
      } 
     }); 

    } 
} 
관련 문제