如何在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方法创建动态变量,但我不明白,因为我是新手,你有建议创建动态变量吗?