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 给出错误
方法 findViewById()
未在类 Fragment
中实现。该方法适用于Activity
或View
因此,请尝试以下更改:
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);
...
}
将代码从 onCreate
移动到 onViewCreated
,这专门是一个 Fragment 生命周期回调。