我在具有按钮的应用程序中具有一个底部导航,因此事实证明,此视图元素是在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();
}
}
,我需要按钮的可用性取决于服务器的响应。例如,在这里,我从服务器上获得了可以删除邮件的信息,并且该按钮应该处于活动状态并且可以单击。我将非常感谢您的帮助和有用的建议。
答案 0 :(得分:1)
用于禁用菜单项
bottomNavigationView.findViewById(R.id.action_delete).setEnabled(false);
启用菜单项
bottomNavigationView.findViewById(R.id.action_delete).setEnabled(true);