findViewById中的错误尝试了一切

时间:2017-10-18 17:17:50

标签: java android findviewbyid

public class fingerp  extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_fingerp, container, false);
        return rootView;
    }
}

带有按钮的标签视图的此ID

String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/documents");

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myDir.mkdirs();
    EditText edit = (EditText)findViewById(R.id.editText);
    String edt = edit.getText().toString();
    File file = new File (myDir,edt);
}

这是用于在android中的外部存储器中保存文件夹,我正在从用户输入文件夹名称并使用我正在使用此语句↓

EditText edit = (EditText)findViewById(R.id.editText);
String edt = edit.getText().toString();

但findViewById发出错误

2 个答案:

答案 0 :(得分:2)

方法findViewById()未在班级Fragment中实施。该方法是针对ActivityView

实施的

因此,请尝试以下更改:

public void onCreate(Bundle savedInstanceState) {
    ....
    EditText edit = (EditText) getActivity().findViewById(R.id.editText);
    ....
}

<强>更新

如下所述,您不能在findViewById()方法期间依赖onCreate来查找来自父活动的视图。这也标在DOCS

  

请注意,在片段的活动仍处于创建过程中时,可以调用此方法。因此,您不能依赖此时正在初始化的活动的内容视图层次结构等内容。如果您想在创建活动本身后继续工作,请参阅onActivityCreated(Bundle)。

这样,如果您的EditText属于R.layout.fragment_fingerp

你可以这样做:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_fingerp, container, false);

    EditText edit = (EditText) rootView.findViewById(R.id.editText);
    String edt = edit.getText().toString();
    File file = new File (myDir,edt);

    return rootView;
}

或者只是将代码从onCreate()移到onActivityCreated

public void onActivityCreated (Bundle savedInstanceState) {
    ...              
    EditText edit = (EditText) getActivity().findViewById(R.id.editText);
    ...
}

答案 1 :(得分:0)

将代码从onCreate移至onViewCreated,这是一个特别是Fragment生命周期回调。