每次更改配置后,我都会尝试从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();
        }
    });
    ...
}

10-07 19:14
查看更多