Я получаю исключение NullPointerException, пытаясь удалить или сделать невидимым ViewStub из моего пользовательского интерфейса.Я просто хотел убедиться, что все делаю правильно.
Я надуваю свою ViewStub в методе onItemLongClick объекта GalleryView, выполняя следующие действия:
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View viu, int arg2,
long arg3) {
Toast.makeText(GalleryView.this, "New item added to Favorites", Toast.LENGTH_SHORT).show();
favsCount++;
//checking to see if ViewStub is already inflated or not
if(!stubvis){
stub = (ViewStub) findViewById(R.id.stub1);
stub.inflate();
stubvis = true;
trayUP = true;
}
return true;
}
});
, а затем в onPrepareOptionsMenu ().добавление пункта меню на основе видимости ViewStub.Если он раздут и виден, я создаю пункт меню, чтобы скрыть его, в противном случае - элемент меню, который нужно показать / сделать видимым.
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
if(trayUP) {
menu.add(0, HIDETRAY, 0, "Hide Favorites Tray");
} else {
menu.add(0, SHOWTRAY, 0, "Show Favorites Tray");
}
return super.onPrepareOptionsMenu(menu);
}
Далее в onOptionsItemSelected () я пишу два случая на основевыбор пункта меню.Случай 1, когда лоток не виден, поэтому я делаю его видимым.Случай 2, когда он виден, поэтому я скрываю его, выполняя следующее:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case HIDETRAY:
Log.v(TAG, "Hiding Favs Tray");
findViewById(R.id.stub1).setVisibility(View.GONE);
trayUP = false;
case SHOWTRAY:
Log.v(TAG, "Showing Favs Tray");
findViewById(R.id.stub1).setVisibility(View.VISIBLE);
trayUP = true;
}
return true;
}
Я знаю, что где-то совершаю глупую ошибку.И мой разум слишком насыщен, чтобы думать прямо сейчас.Нужна помощь: (
Спасибо,
Ab