其他分享
首页 > 其他分享> > android-如何从菜单(onOptionsItemSelected)缩小/隐藏(不可见)ViewStub?

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