Android:Setvisibility to visible会导致按钮上出现nullpointerexception

Android:Setvisibility to visible会导致按钮上出现nullpointerexception,android,Android,这似乎在stackoverflow中被问过,但大多数问题都没有令人信服的答案。不管怎样,我再次尝试。 我有一个Android应用程序,其中显示了一个列表,其中每行都有一个Edittext和按钮组件,如下所示 当视图出现时,编辑文本不可编辑。我使用以下代码执行此操作: private void setNameAsEditable (View rowView, boolean setToEditable) { EditText textView = (EditText) rowView

这似乎在stackoverflow中被问过,但大多数问题都没有令人信服的答案。不管怎样,我再次尝试。 我有一个Android应用程序,其中显示了一个列表,其中每行都有一个Edittext和按钮组件,如下所示

当视图出现时,编辑文本不可编辑。我使用以下代码执行此操作:

private void setNameAsEditable (View rowView, boolean setToEditable) {

    EditText textView = (EditText) rowView
            .findViewById(R.id.edittext_name);
    textView.setFocusableInTouchMode(setToEditable);
    textView.setFocusable(setToEditable);

    ImageButton button = (ImageButton) rowView
            .findViewById(R.id.button_save_name);

            if ( setToEditable ) {

                    button.setVisibility (View.VISIBLE);  // nullpointerexception here
    } else {
        button.setVisibility (View.GONE);
    }
当我长按,并且setToEditable为true时,它会在上面指示的行中抛出nullpointerexception。它似乎找不到按钮组件。但是,“button.setVisibility(View.GONE);”当setToEditable为false且没有任何问题时执行


有人能帮忙吗?

我想问题是视图控件的初始化。您应该初始化顶部的编辑文本和图像按钮

      EditText textView;
      ImageButton button ;
      ...
      ...
      ...
      EditText textView = (EditText) rowView.findViewById(R.id.edittext_name);
      ImageButton button = (ImageButton) rowView.findViewById(R.id.button_save_name);

下一件事是尝试在try&catch块中编写代码,这样您就可以准确地了解错误所在和错误所在。

rowView
似乎是您的
EditText
,而实际上您想要的是包含
按钮的父视图。如果您调用
findViewById
并且该id在该视图中不存在,它将返回null。

您的可能重复项不需要在不同的帖子中问相同的问题。您是否可以发布包含按钮和编辑文本的xml文件必须确保您的按钮是ImageButton或button?@并且这不是该按钮的重复项。这是关于键盘的出现。这是关于按钮可见性设置为开/关。这是两个不同的问题。