【问题标题】:Get reference to LinearLayout in fragment在片段中获取对 LinearLayout 的引用
【发布时间】:2016-07-04 19:04:24
【问题描述】:

在我的布局的 XML 文件中,我添加了一个片段。 我的片段的布局是一个 LinearLayout,它包含一个文本视图。

我想在我的片段类中获得对 LinearLayout 对象的引用,但是尽管尝试了我能想到或在网上找到的所有方法,但它始终为空。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    text = (TextView) getActivity().findViewById(R.id.text);
    layout = (LinearLayout) getActivity().findViewById(R.id.layout);

    if(layout == null){
        text.setText("null");
    }
}

此代码在我的片段类中,由于布局为空,因此导致 TextView 的文本设置为“空”。这怎么可能,因为我试图以完全相同的方式获取对布局和 textview 的引用?


活动类中的onCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    manager = getFragmentManager();
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment);

}

方法二

我尝试在我的活动中获取对 LinearLayout 的引用。这是 Activity 的 onCreate 尝试。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    manager = getFragmentManager();
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment);

    LinearLayout ll = (LinearLayout) findViewById(R.id.layout);
    TextView tv = (TextView) findViewById(R.id.text);

    if(ll == null){
        tv.setText("null");
    }
}

这也将文本更改为“null”。

【问题讨论】:

  • 请发布您的Activity.onCreate。如果正在您的活动中创建视图,我建议您将代码移动到您的活动中
  • 您正在尝试从您的Activity 获取FragmentLinearLayout?我说对了吗?
  • 你引用的是getActivity().findViewById(R.id.text)吗?我还尝试在onActivityCreated() 中使用getView().findViewById(...) 来浏览片段,但这也不起作用

标签: android fragment


【解决方案1】:

通过在片段类中输入layout = (LinearLayout) getView() 或在活动中输入layout = (LinearLayout) fragment.getView() 来解决这两种情况下的问题。这不能回答为什么我所做的事情不起作用(这可能会有所帮助),但这解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多