我一直在尝试缩小或使我的UI中的ViewStub不可见,但是却一直出现NullPointerException。我只是想确保我做得对。
我正在通过以下方式在GalleryView的onItemLongClick方法中填充我的ViewStub:
@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()方法中,我根据菜单项的选择编写了两种情况。第一种情况是托盘不可见,所以我让它可见。第二种情况是托盘可见,所以我通过以下方式隐藏它:
@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