如何根据变量的值使底部导航上的按钮不活动?

时间:2018-08-17 08:08:35

标签: android

我在具有按钮的应用程序中具有一个底部导航,因此事实证明,此视图元素是在onCreate()函数中初始化的,并且此小部件上的按钮应取决于服务器的响应。如果服务器响应为true,则该按钮处于活动状态;如果为false,则该按钮处于非活动状态。这是我的view元素的代码:

BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                switch (menuItem.getItemId()) {
                    case R.id.action_back:
                        Intent intent1 = new Intent(MessageShow.this, SecondScreen.class);
                        switch (type) {
                            case 0:
                                intent1.putExtra("id", 0);
                                break;
                            case 1:
                                intent1.putExtra("id", 1);
                                break;
                        }

                        startActivity(intent1);
                        return true;
                    case R.id.action_delete:
                        return true;
                    case R.id.action_responce:
                        Intent intent2 = new Intent(MessageShow.this, WriteResponceMess.class);
                        startActivity(intent2);
                        return true;
                }
                return false;
            }
        });

这是我向服务器请求的代码:

if (response.isSuccessful())
                {
                    String body = stripHtml(Objects.requireNonNull(response.body()).getBody());
                    tvPerson.setText(Objects.requireNonNull(response.body()).getName());
                    tvTheme.setText(Objects.requireNonNull(response.body()).getSubject());
                    tvBody.setText(Objects.requireNonNull(body));
                    tvDate.setText(Objects.requireNonNull(response.body()).getDate());

                    String reply = Objects.requireNonNull(response.body()).getCanReply();
                    if (reply.equals("true"))
                    {

                    }


                } else {
                    ResponseBody errorBody = response.errorBody();
                    try {
                        if (Objects.requireNonNull(errorBody).string().contains("access_token_expired")) {
                            updateToken();
                        } else if (errorBody.string().contains("invalid_token")) {
                            logOut();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

,我需要按钮的可用性取决于服务器的响应。例如,在这里,我从服务器上获得了可以删除邮件的信息,并且该按钮应该处于活动状态并且可以单击。我将非常感谢您的帮助和有用的建议。

1 个答案:

答案 0 :(得分:1)

用于禁用菜单项

  

bottomNavigationView.findViewById(R.id.action_delete).setEnabled(false);

启用菜单项

  

bottomNavigationView.findViewById(R.id.action_delete).setEnabled(true);