Android 如何根据变量的值使底部导航上的按钮处于非活动状态?
我在有按钮的应用程序中有一个底部导航,因此这个视图元素是在onCreate()函数中初始化的,这个小部件上的按钮应该取决于服务器响应。如果服务器响应为true,则按钮处于活动状态,如果为false,则按钮处于非活动状态。以下是my view元素的代码:Android 如何根据变量的值使底部导航上的按钮处于非活动状态?,android,Android,我在有按钮的应用程序中有一个底部导航,因此这个视图元素是在onCreate()函数中初始化的,这个小部件上的按钮应该取决于服务器响应。如果服务器响应为true,则按钮处于活动状态,如果为false,则按钮处于非活动状态。以下是my view元素的代码: BottomNavigationView bottomNavigationView = findViewById(R.id.navigation); bottomNavigationView.setOnNavigationItem
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();
}
}
我需要的是按钮的可用性取决于服务器的响应。例如,在这里,我从服务器上得到一个消息,您可以删除我的消息,按钮应该是活动的,可以点击。我将非常感谢任何帮助和有用的建议。禁用菜单项 bottomNavigationView.findViewById(R.id.action_delete).setEnabled(false) 用于启用菜单项 bottomNavigationView.findViewById(R.id.action_delete).setEnabled(true)
但是我怎么能用你的解决方法来解决我的问题呢?据我所知,它只能在onCreate中使用?将bottomNavigationView作为全局变量,然后在onCreate方法中初始化,并在onResponse方法中使用(如上所述,我真的无法正确理解您的意思))如果您不使问题复杂化,请在onCreate方法上指定您的答案write bottomNavigationView bottomNavigationView;然后在oncreate方法bottomNavigationView=findViewById(R.id.navigation)中;然后在onresponse-bottomNavigationView.findViewById(R.id.action_delete).setEnabled(false)中;