在最后几天,我一直在尝试实现一个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();
}
有谁知道如何实现这个?
答案 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();
}
}