当我尝试在onTabSelected()中修改布局的高度时,我得到一个NullPointerException

时间:2015-07-21 12:34:59

标签: android tabs nullpointerexception

这是我非常简单的问题:

当我尝试在onTabSelected()中修改布局的高度时,我得到一个NullPointerException。

以下是代码:

import...

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        tab1.setTabListener(new MyTabListener(fragmentTabCustom));
        actionBar.addTab(tab1);
    }
    ...
    public void changeFragmentTabCustom() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {    
                layout1 = (LinearLayout) findViewById(R.id.layoutdefault);
                layout1.getLayoutParams().height = 0; // the exception appends on this line
                layout1.setLayoutParams(layout1.getLayoutParams());
            }
        }
    }
    ...
}

public class MyTabListener implements ActionBar.TabListener {
    ...
    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        mainActivity.changeFragmentTabCustom();
        ...
    }
}

有什么问题?

1 个答案:

答案 0 :(得分:0)

这是因为您的视图布局参数由父级(Viewgroup)设置。

等到视图附加到窗口(添加onlayout侦听器)或者您可以创建新的LayoutParams,其高度为" 0"。