Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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 void android.widget.ImageView.setEnabled(布尔值)和#x27;关于空对象引用_Java_Android - Fatal编程技术网

Java void android.widget.ImageView.setEnabled(布尔值)和#x27;关于空对象引用

Java void android.widget.ImageView.setEnabled(布尔值)和#x27;关于空对象引用,java,android,Java,Android,我正在使用一个简单的java库文件来撤销和重做文本,如教程和示例android应用程序所示,但对于我来说,当我运行应用程序时,它会显示以下错误 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setEnabled(boolean)' on a null object reference at com.apps.primaln

我正在使用一个简单的java库文件来撤销和重做文本,如教程和示例android应用程序所示,但对于我来说,当我运行应用程序时,它会显示以下错误

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setEnabled(boolean)' on a null object reference
    at com.apps.primalnotes.Fragments.EditorFragment.textAction(EditorFragment.java:1023)
    at com.apps.primalnotes.Fragments.EditorFragment.onCreateView(EditorFragment.java:84)
以下是我在GitHub上遵循的库和方法

我正在做的就是

 EditorFragment extends Pantalla  implements TextUndoRedo.TextChangeInfo, View.OnClickListener{
    private TextUndoRedo TUR;
    private ImageView undo, redo;

 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.editor, container, false);

        getActivity().setTitle("Editor");

        setHasOptionsMenu(true);

        imm =(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        base = new DataBase(context, null);


    text = (EditText) view.findViewById(R.id.texto);
    undo = (ImageView)view.findViewById(R.id.undo);
    redo = (ImageView)view.findViewById(R.id.redo);
    TUR = new TextUndoRedo(text, this);

            textAction(); "Showing error here"

            undo.setOnClickListener(this);
            redo.setOnClickListener(this);
    }

    @Override
        public void textAction() {
            undo.setEnabled(TUR.canUndo());  "Showing error here"
            redo.setEnabled(TUR.canRedo());
        }

    @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.undo:
                    TUR.exeUndo();
                    break;
                case R.id.redo:
                    TUR.exeRedo();
                    break;
您的代码没有“setContentView(R.layout.{layout的文件名})”


你能检查一下吗?应该在使用findViewById方法之前执行此操作。

这里是来自Github源代码的代码

btn_undo = (Button) findViewById(R.id.btn_undo);
btn_undo.setOnClickListener(this);
btn_redo = (Button) findViewById(R.id.btn_redo);
btn_redo.setOnClickListener(this);
下面是代码中的代码:

text = (EditText) view.findViewById(R.id.texto);
undo = (ImageView)view.findViewById(R.id.undo);
redo = (ImageView)view.findViewById(R.id.redo);
TUR = new TextUndoRedo(text, this);

示例使用
按钮
进行撤消/重做,您使用
图像视图
。检查xml中的ImageView ID是什么。与此处的其他内容相同,您的撤消/重做
ImageView
为空。

检查您的XML。用于撤消和重做的ImageView的id应如下所示:

android:id="@+id/undo


你初始化了吗?没有。在GitHub上的给定示例中,它也没有初始化。你的ImageView代码在哪里?你的代码的可能副本不完整。我有,但为了简单起见,我在这里编辑我的代码。如果你能看一下教程链接,它很简单,我也在做同样的事情。但是在我的案例中,通过堆栈跟踪得到这个错误,“undo”变量为null。因此,我建议检查布局文件是否具有带“@+id/undo”的ImageView。它与id无关。ID很好,它与ImageView或按钮无关。我也尝试了button小部件,但给出了相同的错误。另一种可能性是,您确定您膨胀了正确的xml布局吗。来自widget的Null,因为widget未分配或不在您的右侧xml.xml布局和id上。textAction()刚刚出现错误;调用和undo.setEnabled(TUR.canUndo());“此处显示错误”redo.setEnabled(TUR.canRedo());是的,我知道,但从逻辑上讲,如果A不在那里,你可以将
某物设置为A。如果您说您有权为
ImageView
分配权限,我最后的建议是使用
NullPointerException
android:id="@+id/redo"