Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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
Java Android:如何使用单个按钮完成多个任务_Java_Android_Button - Fatal编程技术网

Java Android:如何使用单个按钮完成多个任务

Java Android:如何使用单个按钮完成多个任务,java,android,button,Java,Android,Button,我在活动中有一个按钮。我想对多个任务使用此1按钮 那我该怎么办呢 如果我第一次按下这个按钮,那么它就是“更改2”按钮 如果我按了第二次,那么它将更新我的数据 但这只是工作第一次第二次不是工作 查看我的代码我尝试了什么 Intent extras = getIntent(); { if (extras.hasExtra("edit")) { if (extras.getStringExtra("edit").equals(

我在活动中有一个按钮。我想对多个任务使用此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个任务,但只需更改两个按钮,我将更改数据并单击按钮,然后它就无法执行了

您不应该为按钮创建多个
OnClickListener
,只创建1个并使用它

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();
                        }
                    });
                }
            }
        }
例如:

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(btn.getText().equals("1")){
                //perform action for 1
                btn.setText("2");
                //change button1 to button2
            }else if(btn.getText().equals("2")){
                //perform action for 2
                btn.setText("3");
            }
        }
    });

您可以将单
onclicklistener
开关盒一起使用

 btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                swtich(extras.getStringExtra().toLowerCase(){
                    case "1":
                        // do something
                        break;
                    case "2":
                        // do something else
                        break;
                }
            });
    }

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

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
            }

        });