这个编辑文本字段的静态内容如何?

时间:2017-01-01 09:09:27

标签: android android-fragments

当我尝试在下面的代码片段中实现时,它会给出以下错误。我不明白的是EditText输入字段是如何静态内容的?这可能是我可能在这里遗失的非常基本的东西。

 Error:(28, 32) error: non-static method findViewById(int) cannot be referenced from a static context

代码:

package com.example.kheriaa.meme_fragments_v1;

    import android.app.Fragment;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.EditText;


    public class TopSectionFragment extends Fragment {

        private  EditText TopText;
        private  EditText BottomText ;


        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


            View v = inflater.inflate(R.layout.frags_layout, container, false);

          TopText = (EditText) View.findViewById(R.id.TopText);

            //return super.onCreateView(inflater, container, savedInstanceState);
            return v;
        }
    }

3 个答案:

答案 0 :(得分:2)

试试这个:

TopText = (EditText) v.findViewById(R.id.TopText);

而不是

TopText = (EditText) View.findViewById(R.id.TopText);

Fragment类没有findViewById()方法;但Activity确实如此。编译器抱怨,因为这个Fragment是一个Activity的静态内部类,所以它认为你试图调用该方法。

如果您尝试从片段布局中获取视图,请将findViewById()更改为rootView.findViewById().

如果您尝试从Activity布局获取视图,请将其更改为getActivity().findViewById()

答案 1 :(得分:0)

您应该覆盖onActivityCreated的methond,然后使用

TopText =(EditText)getActivity()。findViewById(R.id.TopText);

BTW rafsanahmad007是完全正确的,他的回答只是确保你在onActivityCreated中做到这一点,因为片段和活动生命周期是不可分割的,所以onCreateView可能被称为BEFORE onActivityCreated。

答案 2 :(得分:0)

将此TopText = (EditText) View.findViewById(R.id.TopText);替换为TopText = (EditText) v.findViewById(R.id.TopText);