2012-06-18 7 views
0

я получаю странные исключения нулевого указателя в последней строке этого кода:андроид tabhost нулевой указатель

tab.addTab(newSpec); 

это код:

private TabHost tab; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_friends); 

    tab = (TabHost) findViewById(R.id.activity_friends_tab); 


    addTab("Chat", ChatTab.class); 
} 
private void addTab(String title, Class<?> cls) 
{  
    TabSpec newSpec = tab.newTabSpec(title); 
    newSpec.setIndicator(title); 
    Intent newIntent = new Intent(this, cls); 
    newSpec.setContent(newIntent); 
    tab.addTab(newSpec); 
} 

не могу понять, почему ..

+0

Вам действительно нужно, чтобы изменить это имя метода ... tabhost имеет метод addTab своих собственных и вы объявляете еще один. Не стоит путать компилятор, но он меня уверяет. Или, может быть, это путает компилятор, и это причина вашего NPE. – Barak

ответ

0

нашел мою ошибку: я должен был добавить локальный менеджер активности и запустить tab.setup:

 LocalActivityManager mLocalActivityManager = new LocalActivityManager(
      this, false); 
    mLocalActivityManager.dispatchCreate(savedInstanceState); 
    tab.setup(mLocalActivityManager); 
0

Прежде всего: очистите свой проект.

Тогда, если проблема остается, посмотрите на activity_friends.xml и на имя TabHost, вы, вероятно, использовали неправильную ссылку.

Затем, если вы не использовали неправильную ссылку, вставьте здесь полное исключение LogCat.

И если ничего не работает, просто измените свою активность на TabActivity и измените ссылку своей вкладки на @android: id/tabhost. Затем вы можете ссылаться на свою TabHost, просто позвонив this.getTabHost();

Смежные вопросы