Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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
如何在Android中为setOnClickListener创建if条件_Android_If Statement_Onclicklistener - Fatal编程技术网

如何在Android中为setOnClickListener创建if条件

如何在Android中为setOnClickListener创建if条件,android,if-statement,onclicklistener,Android,If Statement,Onclicklistener,我想为setOnCLickListener创建If条件,当注释的for approval.getVisibility()==View.VISIBLE值如下时,我为变量Comment(ImageButton)创建If条件 ImageButton Comment = (ImageButton) fidViewById(R.id.apprComment); 因为我在一个布局中有不同的设计和不同的功能,如果我创建*ex 2layout它是没有效率的* final LinearLayout forApp

我想为
setOnCLickListener
创建If条件,当注释的
for approval.getVisibility()==View.VISIBLE
值如下时,我为变量Comment
(ImageButton)
创建If条件

ImageButton Comment = (ImageButton) fidViewById(R.id.apprComment);
因为我在一个布局中有不同的设计和不同的功能,如果我创建*ex 2layout它是没有效率的*

final LinearLayout forApproval = (LinearLayout) findViewById(R.id.ForApproval);
final LinearLayout forRequest = (LinearLayout) findViewById(R.id.ForRequest);

ImageButton Comment = null;
ImageButton Edit = null;

if (forApproval.getVisibility() == View.VISIBLE) {
    Comment = (ImageButton) findViewById(R.id.apprComment);
}

// I Want to create multi value in Edit, example in here
if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
}

if (forApproval.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.apprEdit);
}

// I have some ImageButton in Layout, each ImageButton has a different id
// and i want to make if conditional example like ImageButton ( in LinearLayout ) 
// is VISIBLE value of Edit is ImageButton with id reqEdit otherwise is 
// ImageButton in ( LinearLayout VISIBLE value of Edit is ImageButton with id apprEdit


Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});

Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
但我有一个错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                           at dca.application.taaku.hr.AttendandItemId.onCreate(AttendandItemId.java:194)
问题在于:

Edit.setOnClickListener(new View.OnClickListener() {

有人可以推荐我吗?

试试这个:给clicklistener一个If条件

Comment = (ImageButton) findViewById(R.id.apprComment);
Edit = (ImageButton) findViewById(R.id.reqEdit);

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
         // TODO your Script
         }
    });
}
if (forApproval.getVisibility() == View.VISIBLE) {
    Comment.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
         // TODO your Script
         }
     });
}

尝试以下操作:为clicklistener提供If条件

Comment = (ImageButton) findViewById(R.id.apprComment);
Edit = (ImageButton) findViewById(R.id.reqEdit);

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
         // TODO your Script
         }
    });
}
if (forApproval.getVisibility() == View.VISIBLE) {
    Comment.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
         // TODO your Script
         }
     });
}
试试这个

Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
       if (forRequest.getVisibility() == View.VISIBLE) {
         // perform your action here
       }
    }
});

Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
      if (forApproval.getVisibility() == View.VISIBLE) {
         // perform your action here
      }
    }
});
final LinearLayout forApproval = (LinearLayout) findViewById(R.id.ForApproval);
final LinearLayout forRequest = (LinearLayout) findViewById(R.id.ForRequest);

ImageButton Comment ;
ImageButton Edit = null;

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
}
if (forApproval.getVisibility() == View.VISIBLE) {
    Comment = (ImageButton) findViewById(R.id.apprComment);
    Edit = (ImageButton) findViewById(R.id.apprEdit);
}
 if(Comment!=null){

   Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}
if(Edit!=null){
    Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}
试试这个

Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
       if (forRequest.getVisibility() == View.VISIBLE) {
         // perform your action here
       }
    }
});

Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
      if (forApproval.getVisibility() == View.VISIBLE) {
         // perform your action here
      }
    }
});
final LinearLayout forApproval = (LinearLayout) findViewById(R.id.ForApproval);
final LinearLayout forRequest = (LinearLayout) findViewById(R.id.ForRequest);

ImageButton Comment ;
ImageButton Edit = null;

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
}
if (forApproval.getVisibility() == View.VISIBLE) {
    Comment = (ImageButton) findViewById(R.id.apprComment);
    Edit = (ImageButton) findViewById(R.id.apprEdit);
}
 if(Comment!=null){

   Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}
if(Edit!=null){
    Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}

只有当forApproval可见时,您才初始化注释,因为在其他情况下它为null,如果两者都不可见,则编辑也是如此

试试这个

Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
       if (forRequest.getVisibility() == View.VISIBLE) {
         // perform your action here
       }
    }
});

Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
      if (forApproval.getVisibility() == View.VISIBLE) {
         // perform your action here
      }
    }
});
final LinearLayout forApproval = (LinearLayout) findViewById(R.id.ForApproval);
final LinearLayout forRequest = (LinearLayout) findViewById(R.id.ForRequest);

ImageButton Comment ;
ImageButton Edit = null;

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
}
if (forApproval.getVisibility() == View.VISIBLE) {
    Comment = (ImageButton) findViewById(R.id.apprComment);
    Edit = (ImageButton) findViewById(R.id.apprEdit);
}
 if(Comment!=null){

   Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}
if(Edit!=null){
    Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}

只有当forApproval可见时,您才初始化注释,因为在其他情况下它为null,如果两者都不可见,则编辑也是如此

试试这个

Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
       if (forRequest.getVisibility() == View.VISIBLE) {
         // perform your action here
       }
    }
});

Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
      if (forApproval.getVisibility() == View.VISIBLE) {
         // perform your action here
      }
    }
});
final LinearLayout forApproval = (LinearLayout) findViewById(R.id.ForApproval);
final LinearLayout forRequest = (LinearLayout) findViewById(R.id.ForRequest);

ImageButton Comment ;
ImageButton Edit = null;

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
}
if (forApproval.getVisibility() == View.VISIBLE) {
    Comment = (ImageButton) findViewById(R.id.apprComment);
    Edit = (ImageButton) findViewById(R.id.apprEdit);
}
 if(Comment!=null){

   Comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}
if(Edit!=null){
    Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});}
我有两个解决方案

解决方案1

int REQUEST=1,APPROVAL=2, FORWHAT=0;

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
    FORWHAT=REQUEST;
}

if (forApproval.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.apprEdit);
    FORWHAT=APPROVAL;
}

Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
      if(FORWHAT==REQUEST){
            //TODO request code
      }else if(FORWHAT==APPROVAL){
            //TODO approval code
      }else{
           //TODO something else
      }
    }
});
解决方案2

ImageButton comment; //variable starts with small letters.
ImageButton editRequest,editApproval;

 comment = (ImageButton) findViewById(R.id.apprComment);
 editRequest = (ImageButton) findViewById(R.id.reqEdit);
 editApproval = (ImageButton) findViewById(R.id.apprEdit);

comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
editRequest.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
editApproval.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
if (forApproval.getVisibility() == View.VISIBLE) {
    comment.setVisibility(View.VISIBLE);
}

// I Want to create multi value in Edit, example in here
if (forRequest.getVisibility() == View.VISIBLE) {
    editRequest.setVisibility(View.VISIBLE);
    editApproval.setVisibility(View.GONE);
}

if (forApproval.getVisibility() == View.VISIBLE) {
    editApproval.setVisibility(View.VISIBLE);
    editRequest.setVisibility(View.GONE);
}
我有两个解决方案

解决方案1

int REQUEST=1,APPROVAL=2, FORWHAT=0;

if (forRequest.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.reqEdit);
    FORWHAT=REQUEST;
}

if (forApproval.getVisibility() == View.VISIBLE) {
    Edit = (ImageButton) findViewById(R.id.apprEdit);
    FORWHAT=APPROVAL;
}

Edit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
      if(FORWHAT==REQUEST){
            //TODO request code
      }else if(FORWHAT==APPROVAL){
            //TODO approval code
      }else{
           //TODO something else
      }
    }
});
解决方案2

ImageButton comment; //variable starts with small letters.
ImageButton editRequest,editApproval;

 comment = (ImageButton) findViewById(R.id.apprComment);
 editRequest = (ImageButton) findViewById(R.id.reqEdit);
 editApproval = (ImageButton) findViewById(R.id.apprEdit);

comment.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
editRequest.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
editApproval.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
           // TODO your Script
    }
});
if (forApproval.getVisibility() == View.VISIBLE) {
    comment.setVisibility(View.VISIBLE);
}

// I Want to create multi value in Edit, example in here
if (forRequest.getVisibility() == View.VISIBLE) {
    editRequest.setVisibility(View.VISIBLE);
    editApproval.setVisibility(View.GONE);
}

if (forApproval.getVisibility() == View.VISIBLE) {
    editApproval.setVisibility(View.VISIBLE);
    editRequest.setVisibility(View.GONE);
}


NullPointer异常是因为forApproval和forRequest视图都不可见,因此ImageButton编辑为null。尝试在崩溃点之前调试forRequest.getVisibility()和forApproval.getVisibility(),以便修复当前问题。但是如果这段代码在onCreate()中,那么您将面临进一步的问题,最好以不同的方式命名reqEdit和AppEdit。

NullPointer异常是因为forApproval和forRequest视图都不可见,因此ImageButton Edit为空。尝试在崩溃点之前调试forRequest.getVisibility()和forApproval.getVisibility(),以便修复当前问题。但是如果这段代码在onCreate()中,那么您将面临进一步的问题,最好以不同的方式命名reqEdit和AppEdit。

我认为您需要一个动态变量来为OnClick创建if-conditional。我建议您在崩溃点之前尝试调试forRequest.getVisibility()和forApproval.getVisibility(),这样您就可以看到结果并解决当前If Conditional的问题。我认为您需要一个动态变量来为OnClick创建If Conditional。我建议您在崩溃点之前尝试调试forRequest.getVisibility()和forApproval.getVisibility(),这样您就可以看到结果并解决当前的问题,因为If Conditional

我不理解您的问题。您可以在OnCLickListener中使用if语句。我忘记在问题中添加错误。请解释,我们无法理解您的问题。好的,我在代码中创建if条件。但是我在编辑时出错。setOnClickListener在我的问题中出错(我更新了问题)@JasonDoe编辑和评论按钮在你的UI中位于同一位置?我不明白你问了什么。您可以在OnCLickListener中使用if语句。我忘记在问题中添加错误。请解释,我们无法理解您的问题。好的,我在代码中创建if条件。但是我在编辑中出错。setOnClickListener在我的问题中出错(我更新问题)@JasonDoe编辑和注释按钮在您的UI中位于同一位置?请检查我的更新,因为我需要更多的值,如果在Editohk中,让我检查我在布局中有一些ImageButton,每个ImageButton都有一个不同的id,我想确定像ImageButton(在LinearLayout中)这样的条件示例是否可见编辑的值是带有id reqEdit的ImageButton,否则ImageButton在吗(LinearLayout编辑的可见值为ImageButton,id为Appredit请检查我的更新,因为我需要更多来自if in Editohk的值让我检查一下我在布局中有一些ImageButton,每个ImageButton都有不同的id,我想制作if条件示例,如ImageButton(在LinearLayout中)编辑的可见值为id为reqEdit的ImageButton,否则ImageButton是否处于(LinearLayout编辑的可见值是ImageButton,id为Appredit请检查我的更新,因为我需要更多来自if in Edit的值谢谢你的解释和解决方案,这是工作,但我需要创建动态变量,因为我的代码非常庞大请检查我的更新,因为我需要更多来自if in Edit的值谢谢你的解释关于和解决方案,这是工作,但我需要创建动态变量,因为我的代码非常庞大。谢谢你的解释。谢谢你的解释。谢谢你的解释和解决方案。这是工作,但我需要创建动态变量,因为我的代码非常庞大。你可以使用我的解决方案1,在数组中存储许多值,并检查它ter单击listener并执行任务感谢您的解释和解决方案,这是工作,但我需要创建动态变量,因为我的代码非常庞大。您可以使用我的解决方案1,在数组中存储许多值,并在单击listener并执行任务后进行检查感谢您的解释和解决方案,这是工作,但我需要创建动态变量变量,因为我的代码非常庞大,谢谢你的解释和解决方案,这是工作,但我需要创建动态变量,因为我的代码非常庞大,谢谢你的解释和解决方案,你好吧,我需要为onClick方法创建动态变量,但我不明白,因为我是新手,你建议创建动态变量变量?谢谢你的解释和解决方案,你还好吧,我需要为onClick方法创建动态变量,但我不明白,因为我是新手,你有建议创建动态变量吗?