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() では、メニュー項目の選択に基づいて 2 つのケースを記述しています。トレイが見えないケース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;
}
私はどこかでばかげた間違いを犯していることを知っています。そして、私の心は飽和しすぎて、現時点ではまっすぐに考えることができません. 助けが必要 :(
ありがとう、
アブ