这个问题是不同的,因为这是使用api数据意图,然后如果你使用正常if else条件它不工作。检查下面的正确答案及其条件 ----------
喜
我试图让Android呼叫服务点击按钮,按钮在ListView
内,当我点击一个列表项时,它转到单个项目视图中的单个项目视图中每个项目都附有一个移动号码拨打按钮。数字存储在解析数据库中,我使用解析api进行调用。
现在,当我点击一个号码时,它会转到呼叫功能。我需要的是,假设单个视图没有手机号码,按钮不应该是可点击的。如果有人知道请帮助我。
编辑答案作为下面的一个答案,但这也无法正常工作
btn = (Button) findViewById(R.id.button56) ;
btn.setClickable(false);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phno = object.getString("telephone");
Intent i=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:" +phno));
startActivity(i);
}
});
以下是我的代码
btn = (Button) findViewById(R.id.button56) ;
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phno = object.getString("telephone");
Intent i=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:" +phno));
startActivity(i);
}
});
答案 0 :(得分:2)
您可以检查并将按钮启用设置为false,也可以将其设置为false,然后您可以将以上状态设置为适配器的getView()
内的按钮,以便在数据中的移动电话号码字段为空时将其禁用列表
mButton.setClickable(false);
mButton.setEnabled(false);
在将Click Listener添加到按钮之前,将下面的代码放在下面。
mButton = (Button) findViewById(R.id.button56) ;
String phno = object.getString("telephone");
if(phno==null || phno.equals("")){
mButton.setClickable(false);
mButton.setEnabled(false);
}
else{
mButton.setEnabled(true);
mButton.setClickable(true);
}
答案 1 :(得分:1)
一种方法是使用Button.setClickable
Button button;//initialize, add onClickListener, styling, whatever you need
button.setClickable(true/false);//This is what sets it clickable/unclickable
那么看看是否存在数字/值(如果您使用的是EditText或需要输入的其他内容)和setClickable
是真还是假,具体取决于是否有值
要确保有值,请添加到onClickListener:
String string = editText.getText();
if(string.equals("")){
//throw exception, show toast, whatever you feel like doing in the event that the button is pressed in an unclickable state
return;
}
示例整合
Button btn;//initialize, set listeners, etc
btn.setClickable(false);//edittext has no input initially, so set the button as unclickable
EditText et;//initialize
et.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
//s is the input in form of a charsequence that has a length for each char. Meaning if it isn't 0, there is input and the button is clickable. If it is 0, there is no text and the button should not be clickable
if(s.length() != 0)
btn.setClickable(true);
else
btn.setClickable(false);
}
});
答案 2 :(得分:1)
听起来你需要在onClick事件之前对此进行评估。
设置布尔值并评估该字段是否包含数据。如果语句返回为false,则使用btn.setClickable(false);
。
答案 3 :(得分:1)
btn = (Button) findViewById(R.id.button56) ;
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phno = object.getString("telephone");
if(! phno.equals(""))
{
Intent i=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:" +phno));
startActivity(i);
}
else
//generate toast here
}
});
我希望这会有所帮助。