隐藏orroic活动控件形成片段类时获取nullpointer

时间:2016-06-14 04:48:15

标签: java android android-fragments

我想隐藏我在活动类中的布局,下面的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错误;
任何想法我怎么能解决这个问题?你的所有建议都很明显

3 个答案:

答案 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,则视图将可见。

我认为,这将是最好的解决方案。希望这会对你有所帮助。

我的相关答案是herehere

答案 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);
}