如何根据Android中的Internet可用性启用和禁用登录按钮?

时间:2016-05-31 04:53:04

标签: android

我的应用程序中有登录屏幕,我在其中根据Internet可用性方案启用和禁用EditText按钮的方法是这样的: - 说明:登录/创建帐户按钮应在互联网可用时启用,并在互联网不可用时禁用,这应该是实时完成的,目前似乎正在按键事件上检查互联网可用性。现在,考虑两个场景

  1. 我们输入所有细节,然后启用互联网。 预期结果:应启用登录/创建帐户按钮。 实际结果:登录/创建帐户按钮仍处于禁用状态。

  2. 互联网可用,我们输入所有必需的详细信息,按钮启用。现在,如果互联网被禁用 预期结果:应禁用按钮 实际结果:按钮保持启用状态

  3. 这是我的代码: -

    public void checkFieldsForEmpty() {// this method check Edit text is empty or not
        m_LoginBtn = (AppCompatButton) findViewById(R.id.btn_Login);// finding Id login botton
    
        s_szMobileNumber = m_InputMobile.getText().toString().trim();// get mobile number from edit Text
        s_szPassword = m_InputPassword.getText().toString().trim();// get password from edit text
        // check mobile Internet connectivity
        if (NetworkUtil.isConnected(getApplicationContext())) {
            // if mobile number and password are Emoty
            if (s_szMobileNumber.equals("") || s_szPassword.equals("")) {// check if mobile and password is empty ..
                m_LoginBtn.setEnabled(false);// make Login button disabled
                m_LoginBtn.setBackgroundColor(Color.rgb(192, 192, 192));// color of login button
            } else {
                m_LoginBtn.setEnabled(true);// make login button enabled
                m_LoginBtn.setBackgroundColor(Color.rgb(0, 80, 147));// set background color on eabled
                m_LoginBtn.setOnClickListener(new View.OnClickListener() {// onclick listener on Login Button
                    @Override
                    public void onClick(View v) {
                        postLoginDataToServer();
    
                    }
                });
            }
    
        } else {
            try {
                CSnackBar.getInstance().showSnackBarError(findViewById(R.id.mainLayout), "No Internet Connection Available", getApplicationContext());
    
            } catch (Exception e) {
                e.printStackTrace();
            }
            m_LoginBtn.setEnabled(false);
            m_LoginBtn.setBackgroundColor(Color.rgb(192, 192, 192));
        }
    

2 个答案:

答案 0 :(得分:1)

您应该使用过滤器注册广播接收器:
    android.net.conn.CONNECTIVITY_CHANGE

然后,每当您的网络状态发生变化时,您都会收到通知。只需检查您的接收器内是否有连接,并相应地更改按钮状态。

检查android开发者网站以获取更多信息:Monitor for Changes in Connectivity

答案 1 :(得分:0)

您应该在代码中使用setVisibilty方法,下面是示例,您可以根据需要对其进行修改。

private void updateUI(boolean isOnline) {
    if (isOnline) {
        findViewById(R.id.sign_in_button).setVisibility(View.GONE);
        findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
    } else {
        mStatusTextView.setText(R.string.signed_out);

        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
        findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
    }
}

您可以在此处查看如何检查互联网连接。 http://yasirameen.com/2016/02/check-network-connection-available/