当我尝试在下面的代码片段中实现时,它会给出以下错误。我不明白的是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;
}
}
答案 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);