android-如何从菜单(onOptionsItemSelected)缩小/隐藏(不可见)ViewStub?
作者:互联网
我不断收到NullPointerException试图缩小或使UI中的ViewStub不可见.我只是想确保自己做对了.
我通过执行以下操作来在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()中,我将基于菜单项选择来编写两种情况.情况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;
}
我知道我在某个地方犯了一个愚蠢的错误.而且我的思想太过饱和,无法立即思考.需要帮忙 :(
谢谢,
抗体
解决方法:
Abhishek,您似乎正在尝试实现某种抽屉功能.如果仅使用SlidingDrawer类,则可能能够解决所有这些设置视图可见性的问题.
标签:menu,android,viewstub 来源: https://codeday.me/bug/20191102/1988300.html