Java findViewById中的错误尝试了所有操作
此id用于带按钮的选项卡式视图Java findViewById中的错误尝试了所有操作,java,android,findviewbyid,Java,Android,Findviewbyid,此id用于带按钮的选项卡式视图 public class fingerp extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.lay
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;
}
}
这是为了在android的外部存储中保存一个文件夹,我从用户那里获取文件夹名称输入,并使用该语句↓
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);
}
但是findViewById给出了一个错误方法findViewById()
未在类片段中实现。该方法用于活动
或视图
因此,请尝试以下更改:
EditText edit = (EditText)findViewById(R.id.editText);
String edt = edit.getText().toString();
更新
正如下面所评论的,在onCreate
方法期间,您不能依赖findViewById()
从父活动中查找视图。这也标记在:
请注意,可以在片段的活动仍处于创建过程中时调用此函数。因此,您不能依赖于此时初始化活动的内容视图层次结构之类的东西。如果要在创建活动本身后执行工作,请参阅onActivityCreated(捆绑)
这样,如果您的EditText
是R.layout.fragment\u fingerp
你可以做:
public void onCreate(Bundle savedInstanceState) {
....
EditText edit = (EditText) getActivity().findViewById(R.id.editText);
....
}
或者只需将代码从onCreate()
移动到onActivityCreated
:
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
移动到onViewCreated
,这是一个片段生命周期回调 请发布错误stacktracePost您的错误日志。请注意,在onCreateView期间,我正在保存mRootView。。。不是根视图。。。无论如何,我添加了第二个选项。在选项2中检查答案,我不这么认为。活动是在onAttach期间设置的(在onCreate之前调用)。@W0rmH0le知道了,我删除了我的评论。不管怎样,迈克的便条仍然有效。@MikeM。谢谢你的反馈。。我根据你的评论更新了我的答案。。谢谢你的建议。
public void onActivityCreated (Bundle savedInstanceState) {
...
EditText edit = (EditText) getActivity().findViewById(R.id.editText);
...
}