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

我必须单击两次按钮才能正常工作

艾茂学
2023-03-14
问题内容

因此,我在应用程序中有一个按钮和一个edittext。当我单击按钮并在edittext中写一些东西时,textview改变了。除了一件事以外,一切都应按其应有的方式进行。我必须单击两次按钮才能使其正常工作(仅在我第一次打开活动时)。打开活动后的第一次,我按下按钮,但没有任何反应,此后它应能正常工作。

我已经对此进行了研究,据我所知,引起麻烦的是专注,但我尝试了几件事却没有任何效果。

按钮XML代码:

<Button
    android:id="@+id/submitButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/editText1"
    android:layout_alignBottom="@+id/editText1"
    android:layout_alignLeft="@+id/checkBox25"
    android:text="@string/addMaterial"
    android:onClick="submitQuantityButton" >
</Button>

Edittext XML代码:

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/spinner1"
    android:ems="3"
    android:inputType="number"
    android:maxLength="3" >
</EditText>

我尝试将android:focusableInTouchMode =“
false”添加到按钮XML,也尝试将requestFocus添加到按钮XML,但仍然无法正常工作。我还从edittext中删除了requestFocus,它不起作用。我的想法已经用尽了。

onClick方法:

public void submitQuantityButton (View v){
    Button submitButton = (Button)findViewById(R.id.submitButton);
    final Spinner sItems = (Spinner)findViewById(R.id.spinner1);
    final Context context = this;
    final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
    final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
    final CheckBox cb33 = (CheckBox) findViewById(R.id.checkBox33);
    final CheckBox cb30 = (CheckBox) findViewById(R.id.checkBox30);
    final CheckBox cb6 = (CheckBox) findViewById(R.id.checkBox6);
    final CheckBox cb7 = (CheckBox) findViewById(R.id.checkBox7);
    final CheckBox cb9 = (CheckBox) findViewById(R.id.checkBox9);
    final CheckBox cb10 = (CheckBox) findViewById(R.id.checkBox10);
    final CheckBox cb11 = (CheckBox) findViewById(R.id.checkBox11);
    final CheckBox cb12 = (CheckBox) findViewById(R.id.checkBox12);

    //
    final AlertDialog.Builder emptyETextErrorBuilder = new AlertDialog.Builder(context);
    emptyETextErrorBuilder.setTitle("Warning");
    emptyETextErrorBuilder.setMessage("Please enter a value before pressing this button");
    emptyETextErrorBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });

    submitButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final int position = sItems.getSelectedItemPosition();
            EditText quantityEditText = (EditText)findViewById(R.id.editText1);

            switch (position){
            case 0:
                AlertDialog.Builder spinnerErrorBuilder = new AlertDialog.Builder(context);
                spinnerErrorBuilder.setTitle("Warning");
                spinnerErrorBuilder.setMessage("Please choose an item from the list above and then enter a certain value");
                spinnerErrorBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });
                AlertDialog spinnerError = spinnerErrorBuilder.create();
                spinnerError.show();
                break;
            case 1:
                String item1 = quantityEditText.getText().toString();
                if (item1.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb4.setText("Elaborate Totem (" + item1 + "/250)");
                }
                break;
            case 2:
                String item2 = quantityEditText.getText().toString();
                if (item2.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb5.setText("Pile of Crystalline Dust (" + item2 + "/250)");
                }
                break;
            case 3:
                String item3 = quantityEditText.getText().toString();
                if (item3.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb33.setText("Pile of Crystalline Dust (" + item3 + "/250)");
                }
                break;
            case 4:
                String item4 = quantityEditText.getText().toString();
                if (item4.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb30.setText("Pile of Crystalline Dust (" + item4 + "/250)");
                }
                break;
            case 5:
                String item5 = quantityEditText.getText().toString();
                if (item5.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb6.setText("Powerful Venom Sac (" + item5 + "/250)");
                }
                break;
            case 6:
                String item6 = quantityEditText.getText().toString();
                if (item6.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb7.setText("Vial of Powerful Blood (" + item6 + "/250)");
                }
                break;
            case 7:
                String item7 = quantityEditText.getText().toString();
                if (item7.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb9.setText("Ancient Bone (" + item7 + "/250)");
                }
                break;
            case 8:
                String item8 = quantityEditText.getText().toString();
                if (item8.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb10.setText("Armored Scale (" + item8 + "/250)");
                }
                break;
            case 9:
                String item9 = quantityEditText.getText().toString();
                if (item9.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb11.setText("Vicious Claw (" + item9 + "/250)");
                }
                break;
            case 10:
                String item10 = quantityEditText.getText().toString();
                if (item10.matches(""))
                {
                    AlertDialog emptyETextError = emptyETextErrorBuilder.create();
                    emptyETextError.show();
                }
                else
                {
                    cb12.setText("Vicious Fang (" + item10 + "/250)");
                }
                break;
            }
        }
    });
}

问题答案:

好的,所以我终于自己找出了引起问题的原因。我不敢相信我错过了如此明显的问题。引起问题的不是重点,而是方法本身。在我的XML文件中,我通过android:onClick
=“ onClick”调用了onClick方法,然后还向Java代码的onClick方法内添加了一个buttonlistener。

我所做的就是删除按钮监听器,不再需要双击!因此,如果将来有人遇到此问题,只需确保您没有同时拥有onClick方法和buttonlistener。

错误代码:

public void submitQuantityButton (View v){

submitButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
.
.
. //REST OF THE CODE

为了使其正常工作,我只删除了onclick侦听器,仅保留了以下内容:

public void submitQuantityButton (View v){
.
.
. //REST OF THE CODE


 类似资料:
  • 我的问题是,我的活动中的按钮需要单击两次,以使代码执行用onClick方法编写的代码。当我共享我的活动代码和布局文件代码时。请引导我解决这个问题。 活动(片段) 布局文件 而此片段正在另一个主要活动中初始化。

  • 问题内容: 我有一个非常简单的表单,其中需要选择一个单选按钮以使表单有效。单选按钮由生成。 从该小提琴中可以看出,理想的行为是,当第一次单击单选按钮时,应该验证表单(是唯一的元素),但是请注意(在同一单选按钮上)按钮或任何其他)来验证表单: http://jsfiddle.net/Xsk5X/3/ 我想念什么? 问题答案: 尝试将ng-click属性添加到您的单选按钮输入中。 感谢Manny D首

  • 背景:试图在一个页面站点上为移动设备构建一个全屏菜单。 问题:需要单击#handle div两次才能执行操作。我尝试过以不同的方式使用follows,但我似乎在某些方面实现错误:live/die、bind/unbind、on/off、delegate/Undelegate。 我不明白我该如何解决我的问题。很抱歉在一些Divs上出现了错误的ID名。 HTML Jquery点击li时,用户将向下滚动页

  • 问题内容: 我在Java中的框架上附加了一个侦听器,当我按任意键时都可以检测到按键,但是发生了一件奇怪的事。我的游戏是扫雷游戏,我有一个重新启动按钮,基本上可以清除木板并消除它。奇怪的是,当我用鼠标单击按钮时,一切都可以很好地清除,并且板子仍然保留,但键侦听器停止工作。即使是陌生人,我也有一个jmenuitem,它基本上会自动单击按钮。所以就像restartbutton.doclick() 如果我

  • 我找到了其他相关的问题,但没有一个答案实际上解决了我的问题。这个按钮在IE上很好用,但在Chrome上不行。我尝试移除span元素,将按钮放在任何其他标记之外,但仍然触发了两次。这个temple扩展了一个'base.html'文件,代码位于'main'元素中。 HTML: jQuery:

  • 好的,伙计们。我正在尝试创建一个小费计算器,我遇到了一些问题。问题是当用户输入一个值时,程序会询问(禁用enter按钮)用户是否希望包含提示,因此用户选择是或否。如果选择了其中任何一个,前面的问题就消失了,文字出现“小费包括在内”或“小费不包括在内”。现在,如果用户想要编辑上面的值,按钮将再次被启用,但是如果它点击了一个,它将再次询问用户是否想要包含提示。所以我的问题是,我怎样才能使它使它,无论那