2017-03-05 57 views
-2

这个问题是不同的,因为这是使用API​​数据的意图,然后如果你使用正常,如果其他条件不工作。检查下面的正确答案和它的条件 ----------禁用按钮点击:只有当字段为空

嗨, 我试图让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

这是不同的请检查它。 @Rotwang –

回答

2

您可以检查并设定按钮使假,也可点击假的,你可以在上面状态按钮中的适配器的getView()并设定其预禁用,如果你的手机号码,场均在数据列表为空

mButton.setClickable(false); 
mButton.setEnabled(false); 

在添加Click Listener to按钮之前添加以下代码。

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); 
} 
+0

你能提供得到视图代码我也不明白那部分 –

+0

如果你有Listview然后当你在你的适配器设置电话数据,所以当你设置电话号码按钮,然后放置一个条件为空字符串,如果您的字符串是空的,则禁用您的按钮。 –

+0

查看我的更新回答@ FaizalMohamed –

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取决于是否存在值是true或false

并确保存在数值,添加到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); 
     } 
    }); 
+0

嗨,谢谢。你能给我提供完整的代码吗?我的意思是可以tyou在我的问题impliment请..我是新手开发人员无法impliment您的代码在我的 –

+0

现在添加代码。稍后查看更新 – Zoe

+0

hi thnaks在这里我可以在哪里实现点击功能 –

1

听起来像是你将需要onClick事件之前评估这个。

设置布尔值并评估该字段是否有数据。如果语句返回为false,则使用btn.setClickable(false);

+0

btn =(Button)findViewById(R.id.button56); btn.setOnClickListener(新View.OnClickListener(){ @Override 公共无效的onClick(视图v){ btn.setClickable(假); 字符串PHNO = object.getString( “电话”); 意图i = new Intent(Intent.ACTION_DIAL,Uri.parse(“tel:”+ phno)); startActivity(i); } }); –

+0

我加了这个,但仍然是空的工作 –

+0

评论代码很难看:P看起来像你在onClick事件中设置可点击。在onClick之前评估setClickable。否则,你仍然在执行onClick事件中的其他代码 – BR89

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 


       } 
      }); 

我希望这会有所帮助。

+0

我添加了此代码,然后应用程序崩溃:(还有什么我需要修改@Shubham Agarwal Bhewanewala –

+0

我编辑了代码并确保phno不为空 –

+0

请再次检查答案其他不与brakect,并且当我没有编号的应用程序崩溃时,我绑定了包裹 –