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

家伙:

所以我的应用程序中有一个按钮,还有一个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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我必须单击两次才能打开和关闭菜单

触摸屏用户必须单击两次链接才能正常工作

onclick事件需要单击两次才能工作

在手机上必须单击两次才能单击按钮

为什么按钮必须单击两次才能起作用?

为什么我必须单击两次“ Tab”按钮才能响应?

我需要单击两次,该按钮才能显示该组件

我必须运行两次cmake才能编译项目

我必须单击两次链接按钮才能更改页面

为什么需要单击两次按钮才能工作

在点击事件触发前,我必须单击“取消”按钮两次

Rails-jQuery为什么我必须单击两次才能显示jQuery效果?

为什么我必须单击两次按钮才能打开URL?

在这种情况下,为什么必须单击两次才能加载我的图像?

我有一个表单验证器,我必须单击两次发送按钮才能将数据发送到ajax-为什么?

必须单击两次按钮才能在Android Studio中工作

必须单击两次按钮才能触发c ++

(Angular 6)单击按钮两次才能工作

必须单击注册按钮两次才能让用户注册

我必须单击搜索按钮两次才能从 api 获取数据

为什么我必须单击两次才能运行我的功能?

按钮出现故障,我必须单击两次才能显示信息,而且照片未正确对齐,这是为什么?

我必须单击 Jquery 提交按钮两次

必须单击两次才能激活 onclick 事件 JavaScript

为什么我必须单击 TextField 两次才能显示我的列表?

我必须输入两次才能让我的 getchar() 工作

colorbox - 按钮需要单击两次才能触发 onclick

React 中的单选按钮 - 我必须单击两次才能看到选择和更新状态

反应按钮 onClick 需要两次单击才能第二次工作