2015-07-21 49 views
-2

這是我很簡單的問題:我得到一個NullPointerException當我嘗試修改佈局的onTabSelected(高度)

我得到一個NullPointerException當我嘗試修改onTabSelected佈局的高度() 。

下面是代碼:

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

請問您可以添加更多的代碼片段。 –

+0

檢查以確保'getLayoutParams'不返回空值。如果是這樣,你可以在調用get之前初始化一些東西。在這種情況下,請檢查文檔。 – Carcigenicate

+0

聲明和使用該方法(onTabSelected)在哪裏?該錯誤很可能是由於layout1不屬於您的Activity的佈局的一部分。 – 2Dee

回答

0

發生這種情況是因爲您的視圖的layoutparams由Parent(Viewgroup)設置。

等到視圖附加到窗口(添加onlayout監聽器),或者您可以創建新的LayoutParams,高度爲「0」。

+0

我認爲這個問題可能來自layout1在onTabSelected()被調用時尚未創建的事實。你能解釋你的解決方案嗎? –

+0

我試了ViewTreeObserver。它也得到一個NullPointerException,因爲我試圖把這個觀察者的佈局尚未創建...任何想法如何我可以在每次選擇它時在選項卡中的片段中修改佈局???幫助 –

+0

我是否需要完成我的問題或提出一個新問題才能獲得解決方案? –

相關問題