2013-08-08 38 views
8

Cố gắng bắt đầu với phát triển Android và thực hiện một số công việc cơ bản với TextViews ..TextView.setText (Android) đang gây ra sự cố .. bất kỳ ý tưởng nào tại sao?

Vì lý do nào đó phương thức setText() đang gây ra vấn đề lớn cho tôi .. đây là phiên bản đơn giản của mã của tôi để hiển thị những gì tôi có nghĩa là:

package com.example.testapp; 

import android.os.Bundle; 
import android.app.Activity; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    TextView text; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     text = (TextView) findViewById(R.id.text1); 
     setContentView(R.layout.activity_main); 
     text.setText("literally anything"); 
    } 
} 

Điều này sẽ gây ra sự cố và tôi không hiểu tại sao .. nếu tôi tạo TextView trong chế độ onCreate nó hoạt động tốt, nhưng nếu tôi tạo nó bên ngoài, nó không .. tại sao vậy? Có dòng chữ "TextView text;" chưa được thực hiện hay gì đó?

Cảm ơn!

Trả lời

9

Bạn cần phải gọi setContentView() trước khi khởi tạo TextView để hoạt động của bạn có quyền truy cập vào tất cả các linh kiện bố trí.

setContentView(R.layout.activity_main); 
text = (TextView) findViewById(R.id.text1); 

text.setText("literally anything"); 
3

switch 2 dòng

text = (TextView) findViewById(R.id.text1); 
    setContentView(R.layout.activity_main); 

bạn cần phải thiết lập các nội dung đầu tiên

2

Từ tài liệu:

onCreate (Bundle) là nơi bạn khởi tạo hoạt động của bạn. Hầu hết là quan trọng, ở đây bạn thường gọi setContentView (int) với tài nguyên bố cục xác định giao diện người dùng của bạn và sử dụng findViewById (int) để truy xuất các tiện ích trong giao diện người dùng mà bạn cần tương tác với theo chương trình.

Vì vậy, điều này có nghĩa rằng nếu bạn sẽ tham khảo ý kiến ​​của bạn trong cách bố trí, trước tiên bạn phải thiết lập các quan điểm nội dung và đã sau đó gọi phương thức findViewById để tham khảo xem con của tài nguyên bố trí quy định của hoạt động của bạn UI

1
text = (TextView) findViewById(R.id.text1); 
setContentView(R.layout.activity_main); 
text.setText("literally anything"); 

Nếu "nghĩa đen bất kỳ" là một biến, thường có thể là trường hợp, hãy chắc chắn rằng nó không phải là ném một NullPointerException. Tôi đã tự mình gặp vấn đề đó. Tôi đã sửa nó thành:

text = (TextView) findViewById(R.id.text1); 
    setContentView(R.layout.activity_main); 
    try { 
     text.setText("literally anything"); 
    } catch (NullPointerException e) { 
     // Do something 
    } 

Ngoại lệ có thể thực sự hữu ích, vì vậy nếu bạn là người lập trình ban đầu, tôi đề nghị bạn xử lý ngoại lệ trong danh sách những điều cần học sớm.