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发出错误
答案 0 :(得分:2)
方法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);
...
}
答案 1 :(得分:0)
将代码从onCreate
移至onViewCreated
,这是一个特别是Fragment生命周期回调。