2013-12-13 219 views
-2

你能告訴我爲什麼這段代碼不工作嗎?一旦我點擊圖像(Imageview1),應用程序就會停止。調試器指向tv.setText(x);爲什麼setText()函數不起作用?

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
final TextView tv = (TextView)findViewById(R.id.textView1); 
setContentView(R.layout.activity_main); 
ImageView img = (ImageView) findViewById(R.id.imageView1); 
img.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     String x="You clicked on the image."; 
      tv.setText(x); 
     } 
    }); 

}   
+0

嘗試在調試器中運行您的應用程序。 – kukido

+0

爲什麼調試器停在'tv.setText(x)'?那裏有斷點嗎?調試器告訴你它爲什麼停止?是否顯示任何消息? – Eric

回答

0

你需要讓你的UI元素後充氣佈局,否則findViewById回報null,因此當您試圖設置文本您textView的NPE被拋出。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);      /// I swap these two lines 
    final TextView tv = (TextView)findViewById(R.id.textView1); /// 
    ImageView img = (ImageView) findViewById(R.id.imageView1);