当前位置: 首页 > 面试题库 >

Android:如何使用单个按钮执行多个任务

东方明亮
2023-03-14
问题内容

我有1个活动按钮。我想将此1按钮用于多个任务。

那我该怎么办?

  • 如果我第一次按此按钮,则更改为2按钮

  • 如果我按了第二次,那么它将更新我的数据

但是第一次只能工作第二次不能工作

看看我的代码我尝试了什么

Intent extras = getIntent();
        {
            if (extras.hasExtra("edit")) {
                if (extras.getStringExtra("edit").equals("home")) {

                    etCompanyName.setEnabled(false);
                    etWebsite.setEnabled(false);
                    etEmail.setEnabled(false);
                    etPhoneHome.setEnabled(false);
                    etPhonePrimary.setEnabled(false);
                    etAddressLine1.setEnabled(false);
                    etAddressLine2.setEnabled(false);
                    etCity.setEnabled(false);
                    spStates.setEnabled(false);
                    etZip.setEnabled(false);
                    spContries.setEnabled(false);
                    //1st time use hear 
              txtSave.setText(getResources().getString(R.string.label_edit));
                    txtClose.setText(getResources().getString(R.string.label_back));
                    txtSave.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                    txtSave.setText(getResources().getString(R.string.label_add));
                            txtClose.setText(getResources().getString(R.string.label_cancel));

                            etCompanyName.setEnabled(true);
                            etWebsite.setEnabled(true);
                            etEmail.setEnabled(true);
                            etPhoneHome.setEnabled(true);
                            etPhonePrimary.setEnabled(true);
                            etAddressLine1.setEnabled(true);
                            etAddressLine2.setEnabled(true);
                            etCity.setEnabled(true);
                            spStates.setEnabled(true);
                            etZip.setEnabled(true);
                            spContries.setEnabled(true);
                        }
                    });
                    if (extras != null) {
                        Company value = (Company) extras.getSerializableExtra("company");
                        etCompanyName.setText(value.getName());
                        etWebsite.setText(value.getWebsite());
                        etEmail.setText(value.getEmail());
                        etPhoneHome.setText(value.getPhoneHome());
                        etPhonePrimary.setText(value.getPhonePrimary());
                        etAddressLine1.setText(value.getAddressLine1());
                        etAddressLine2.setText(value.getAddressLine2());
                        etCity.setText(value.getCity());
                        etZip.setText(value.getZipcode());
                    }
                } else {
                    //2nd time use hear 
                    txtSave.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Company company = new Company();
                            company.setName(etCompanyName.getText().toString().trim());
                            company.setWebsite(etWebsite.getText().toString().trim());
                            company.setEmail(etEmail.getText().toString().trim());
                            company.setPhoneHome(etPhoneHome.getText().toString().trim());
                            company.setPhonePrimary(etPhonePrimary.getText().toString().trim());
                            company.setAddressLine1(etAddressLine1.getText().toString().trim());
                            company.setAddressLine2(etAddressLine2.getText().toString().trim());
                            company.setZipcode(etZip.getText().toString().trim());
                            company.setCity(etCity.getText().toString().trim());
                            company.setState(spStates.getSelectedItem().toString());
                            company.setCountry(spContries.getSelectedItem().toString());
                            company.setDate(Util.getInstance(AddCompanyActivity.this).getCurrentDate());

                            long isUpdated = myDb.updateCompany(company);

                            if (isUpdated != -1) {
                                Toast.makeText(getApplicationContext(), "Company Update Successfully: " + isUpdated, Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(getApplicationContext(), "Something wrong", Toast.LENGTH_SHORT).show();
                            }
                            finish();
                        }
                    });
                }
            }
        }

您可以看到我的上面的代码,我可以使用txtSave按钮执行2个任务,但是只更改两个按钮,我将更改数据并单击按钮,然后它就无法执行


问题答案:

尝试这种方式,首先在活动类文件上声明全局变量,如下所示:

int count = 0;

之后,添加您的点击监听器,如下所示:

yourButton.setOnClickListener(v -> {
            if (count == 0) { // the first click
                count++;
                // do your stuff

            }else { // the second click
                count = 0; // initialize the count to limit the button click just for the first and the second time only
                // do your stuff
            }

        });


 类似资料:
  • 当我运行它时,它有一个错误java.lang.NullPointerException。我能知道它是从哪里来的吗?

  • 我试图从父组件按钮单击调用每个子组件函数。尝试使用道具并在componentDidMount函数中将按钮单击指定给新函数,但结果是只有最后一个函数警报(“child2保存”);在按钮点击时被分配和执行,我期望警报(“child1保存”);也将被执行。 如何在父组件上单击要调用的每个子函数按钮,注意子组件在父组件内部有相当大的嵌套级别。

  • 我是JavaFX新手,正在尝试用GridPane做一个简单的按钮设计。 我不知道如何让一个按钮跨越多个列/行,而不把其他按钮推开。我一直在使用HBox和VBox将其他按钮组合在一起。我试过在按钮上设置Rowspan,但似乎不起作用。 看起来怎么样 我希望它看起来怎么样 这是我的代码:

  • 问题内容: 我正在尝试向redux-form添加第二个提交按钮。 这两个按钮都应调度一个保存数据的操作,但是应根据所按下的按钮将用户路由到其他页面。 因此,我定义了一个处理程序,该处理程序作为prop 传递给表单。 但据我所知,只有表单 数据 传递给此处理程序: 注意的文档: 传递给 或传递给的函数。它将运行同步和异步验证,并且,如果表单有效,它将使用表单数据的内容进行调用。 我所缺少的是一种还将

  • 问题内容: 我有以下代码,基本上它正在执行两个操作。第一个是将我的表单数据提交到google电子表格,另一个操作是将我的第二个表单文本框值数据提交到另一个页面文本框值。这个怎么做? 从上面可以看到,这是第一页,第二页是第二种形式的Sankranthi_Reserv2.asp。我想在那儿传递文本框值,所以问题是第一种形式是提交给Google文档并存储数据,但是第二种形式需要将手机号码文本框值传递给下

  • 问题内容: 目前,我有一个HTML表单,用户可以在其中输入文章的标题和文本。当需要提交时,将显示两个按钮。一种是“保存”他们的文章而不发布它,另一种是“发布”该文章并将其公开。 我正在使用PHP,并且试图找出如何分辨使用了哪个按钮,以便在数据库中存储相应的相应值。 可能应该早些时候提到过,但是我无法分配按钮值,因为按钮是图像,所以文本会显示在其上方。 问题答案: 给每一个属性。仅单击的属性将被发送