Android 当我试图修改onTabSelected()中布局的高度时,我得到一个NullPointerException
我的问题很简单: 当我试图在onTabSelected()中修改布局的高度时,会出现NullPointerException 代码如下:Android 当我试图修改onTabSelected()中布局的高度时,我得到一个NullPointerException,android,tabs,nullpointerexception,Android,Tabs,Nullpointerexception,我的问题很简单: 当我试图在onTabSelected()中修改布局的高度时,会出现NullPointerException 代码如下: import... public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ..
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();
...
}
}
怎么了?发生这种情况是因为视图的布局参数是由父视图(视图组)设置的
等待视图附加到窗口(仅添加布局侦听器),或者您可以创建高度为“0”的新布局参数 请再添加一些代码段。检查以确保
getLayoutParams
未返回空值。如果是,您可能需要在调用get
之前初始化某些内容。在这种情况下,请查看文档。该方法(onTabSelected)在哪里声明和使用?此错误很可能是由于布局1不是活动布局的一部分。布局1放置在何处?在包含tabwidget的tab或activity中的片段中?请查看已编辑的代码。我认为问题可能是由于调用ontAbsSelected()时尚未创建layout1。你能解释一下你的解决方案吗?我试过ViewTreeObserver。它也会得到一个NullPointerException,因为我试图放置这个观察者的布局还没有创建。。。你知道我如何在每次选中某个选项卡时修改该选项卡中某个片段中的布局吗???帮助我需要完成我的问题还是提出一个新问题以获得解决方案?