Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何根据变量的值使底部导航上的按钮处于非活动状态?_Android - Fatal编程技术网

Android 如何根据变量的值使底部导航上的按钮处于非活动状态?

Android 如何根据变量的值使底部导航上的按钮处于非活动状态?,android,Android,我在有按钮的应用程序中有一个底部导航,因此这个视图元素是在onCreate()函数中初始化的,这个小部件上的按钮应该取决于服务器响应。如果服务器响应为true,则按钮处于活动状态,如果为false,则按钮处于非活动状态。以下是my view元素的代码: BottomNavigationView bottomNavigationView = findViewById(R.id.navigation); bottomNavigationView.setOnNavigationItem

我在有按钮的应用程序中有一个底部导航,因此这个视图元素是在onCreate()函数中初始化的,这个小部件上的按钮应该取决于服务器响应。如果服务器响应为true,则按钮处于活动状态,如果为false,则按钮处于非活动状态。以下是my 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();
                    }
                }

我需要的是按钮的可用性取决于服务器的响应。例如,在这里,我从服务器上得到一个消息,您可以删除我的消息,按钮应该是活动的,可以点击。我将非常感谢任何帮助和有用的建议。

禁用菜单项

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)中;