Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java findViewById中的错误尝试了所有操作_Java_Android_Findviewbyid - Fatal编程技术网

Java findViewById中的错误尝试了所有操作

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

此id用于带按钮的选项卡式视图

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);
    ...
}