我想隐藏我在活动类中的布局,下面的fragmetn类中的visibilty句柄是我的代码
Myfragment.java
Tags.mStringVarientSoldOut="yes";
ActivityDetailTest site = new ActivityDetailTest();
site.isSoldOut();
ActivityDetailTest.java
mLinearLayoutBottom
已在我的onCreate()
活动类方法
public void isSoldOut()
{
if (Tags.mStringVarientSoldOut.equalsIgnoreCase("yes"))
{
mLinearLayoutBottom.setVisibility(View.GONE);
}
else
{
mLinearLayoutBottom.setVisibility(View.VISIBLE);
}
}
当我在上面的代码上运行时,我在行 mLinearLayoutBottom.setVisibility(View.GONE)时出现了nullpointer错误;
任何想法我怎么能解决这个问题?你的所有建议都很明显
答案 0 :(得分:0)
如果在mLinearLayoutBottom
中声明ActivityDetailTest
并且公开可见,那么请在片段中使用它:
ActivityDetailTest objActivity = (ActivityDetailTest) getActivity();
objActivity.mLinearLayoutBottom.setVisibility(View.GONE);
答案 1 :(得分:0)
通过界面进行活动和片段通信的完美方式。
您应声明一个界面并在您的活动中实施它。然后从您的片段中,您可以通过该界面发送命令。
这是代码示例,您的界面是:
public interface IActivityController{
void hideOrVisibleView(boolean action);
}
现在,在您的活动中实现此界面。实现此界面后,您的活动代码将如下所示:
@Override
public void hideOrVisibleView(boolean isHide) {
if(isHide){
mLinearLayoutBottom.setVisibility(View.GONE);
}else{
mLinearLayoutBottom.setVisibility(View.VISIBLE);
}
}
现在,在基于代码逻辑的片段中,只需使用此行隐藏/显示活动中的View。
((IActivityController)getActivity()).hideOrVisibleView(true/false);
这里,如果你发送true,视图将隐藏,如果为false,则视图将可见。
我认为,这将是最好的解决方案。希望这会对你有所帮助。
答案 2 :(得分:0)
没有界面,您也可以通过这种方式处理
从您的活动类
传递片段类构造函数中的Linearlayout对象MyFragment mMyframge=new MyFragment(mlinearLayoutBottom);
<强> MyFragment.java 强>
创建构造函数
@SuppressLint("ValidFragment")
public MyFragment (LinearLayout mLinearLayout){
this.mLinearLayout=mLinearLayout;
}
现在处理片段类
中的条件if (Tags.mStringVarientSoldOut.equalsIgnoreCase("yes"))
{
mLinearLayout.setVisibility(View.GONE);
}
else
{
mLinearLayout.setVisibility(View.VISIBLE);
}