每次更改配置后,我都会尝试从Textview获取的Layout对象中得到null。
包含代码的方法从onResume()中调用。
我怀疑我需要为此做一些附加设置。
我研究了类似的问题,但没有明确的答案。
什么事件表明配置更改后布局已准备就绪?
是否有一些文档?
编辑:
public class BookDisplayAct extends Activity implements View.OnClickListener {
...
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.textViewMain);
textView.setPadding(15, 15, 15, 15);
...
}
@Override
protected void onResume() {
...
renderBookView();
}
public void renderBookView() {
...
justifyText(spannable, textView);
...
}
private Spannable justifyText(Spannable spannable, TextView textView) {
Layout layout = textView.getLayout();
int line_count = layout.getLineCount();
...
}
我在最后一行收到NullPointer异常。
最佳答案
只需更改您的justifyText方法,如下所示
private Spannable justifyText(Spannable spannable, TextView textView) {
ViewTreeObserver observer= textView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Layout layout = textView.getLayout();
int line_count = layout.getLineCount();
}
});
...
}