如何在Android中的Edittext对话框中输入字节数组

时间:2014-07-31 15:14:47

标签: android arrays dialog android-edittext

在最后几天,我一直在尝试实现一个Edittext对话框,用户引入一个8位数组(1或0)然后应用程序将这个位数组转换为十进制和十六进制值(如果它是11111111它将是dec = 255和hex = 0xFF)但我不太了解实施这种情况。如果不可能以这种方式实现,那么它也可能是一个int / decimal输入而不是位输入。

这是我实现的用于显示Edittext对话框的代码:

else if (uuid.equals(BleDefinedUUIDs.Characteristic.PASSWORD)){
                    final EditText passtext = new EditText(v.getContext());
                    new AlertDialog.Builder(v.getContext())
                    .setTitle("Password Modification")
                    .setMessage("Please, introduce the new 8-bit password (with 1 or 0):")
                    .setView(passtext)
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            // Code to obtain the the bit array/int from the edittext box
                        }

                    })
                    .show();
                }

有谁知道如何实现这个?

1 个答案:

答案 0 :(得分:1)

以下是如何实现此功能的示例。我已经使用了你的代码并对其进行了一些修改。

MainActivity.java

package com.example.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.InputType;
import android.text.method.DigitsKeyListener;
import android.util.Log;
import android.widget.EditText;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final EditText passtext = new EditText(this);

        // Set the length to 8 characters
        passtext.setFilters(new InputFilter[] { new InputFilter.LengthFilter(8) });

        // Set the keypad to numeric
        passtext.setInputType(InputType.TYPE_CLASS_NUMBER);

        // Only allow the user to enter 0 and 1 numbers
        passtext.setKeyListener(DigitsKeyListener.getInstance("01"));

        new AlertDialog.Builder(this).setTitle("Password Modification").setMessage("Please, introduce the new 8-bit password (with 1 or 0):").setView(passtext).setPositiveButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

                String binaryDigits = passtext.getText().toString().trim();

                if (binaryDigits != null && !binaryDigits.isEmpty()) {

                    // Convert the entered digits to decimal
                    int decimalValue = Integer.parseInt(binaryDigits, 2);

                    // Convert the entered digits to hex
                    String hex = Integer.toHexString(decimalValue);

                    Log.d(MainActivity.class.getSimpleName(), "Decimal: " + decimalValue);
                    Log.d(MainActivity.class.getSimpleName(), "Hex: " + hex);
                }
            }

        }).show();
    }
}