1

你好,我有一个点击按钮和两个编辑文本的大问题,我用十二个按钮和两个编辑文本创建了自己的键盘,第一个编辑文本只允许输入数字,第二个允许输入数字并进行计算。我真正的问题是我不能只在第一个中输入第二个编辑文本。这是平局

        *********** *********
        *    1    * *   2   *   // These are EditTexts 
        *********** *********

        **************************
        *   7   *   8    *   9   *   
        **************************
        *   4   *   5    *   6   *  // These are Buttons
        **************************
        *   1   *   2    *   3   *
        **************************
        *   0   *   c    *   +   *
        **************************

(+) 此按钮进行计算并更改编辑文本的焦点

这也是代码:在此先感谢我将不胜感激任何帮助

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_cornuta);

         setupListView(); //set the list view
         inJugada = (EditText) findViewById(R.id.edit_x);
         inJugada.requestFocus();

         inValor = (EditText) findViewById(R.id.edit_y);

         inTotal = (EditText) findViewById(R.id.edit_z);
         inTotal.setText("");
         tv = (TextView) this.findViewById(R.id.textView2);  
         btnMensage = (ImageButton)findViewById(R.id.imageButton1);
         btnCombina = (Button)findViewById(R.id.button6);

         //Implementation for button 0123456789+delclr
         final Button bt0 = (Button) findViewById(R.id.btnNum0Id);
    bt0.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "0";
            }else if(inJugada.requestFocus() == false){
                numberDisplayed += "0";
            }

            updateTextField();

        }
    });

    final Button bt1 = (Button) findViewById(R.id.btnNum1Id);   
    bt1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "1";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "1";
            }
            updateTextField();

        }
    });

    final Button bt2 = (Button) findViewById(R.id.btnNum2Id);
    bt2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "2";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "2";
            }
            updateTextField();
        }
    });

    final Button bt3 = (Button) findViewById(R.id.btnNum3Id);
    bt3.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "3";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "3";
            }
            updateTextField();
        }
    });

    final Button bt4 = (Button) findViewById(R.id.btnNum4Id);
    bt4.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "4";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "4";
            }
            updateTextField();
        }
    });

    final Button bt5 = (Button) findViewById(R.id.btnNum5Id);
    bt5.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "5";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "5";
            }
            updateTextField();
        }
    });

    final Button bt6 = (Button) findViewById(R.id.btnNum6Id);
    bt6.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "6";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "6";
            }
            updateTextField();
        }
    });

    final Button bt7 = (Button) findViewById(R.id.btnNum7Id);
    bt7.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "7";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "7";
            }
            updateTextField();
        }
    });

    final Button bt8 = (Button) findViewById(R.id.btnNum8Id);
    bt8.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "8";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "8";
            }
            updateTextField();
        }
    });

    final Button bt9 = (Button) findViewById(R.id.btnNum9Id);
    bt9.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(inJugada.requestFocus() == true){
                playDisplayed += "9";
            }else if(inValor.requestFocus() == true){
                numberDisplayed += "9";
            }
            updateTextField();
        }
    });

    final Button btPlus = (Button) findViewById(R.id.btnAddId);
    btPlus.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            if(inJugada.length() == 4){
                processPale();

            }else if(inJugada.length() == 2){
                processNum();

            }else if(inJugada.length() == 6){
                processTripleta();

            }

            //processNumbers();
            //showListViewData();
            updateTextField();
            plus = true;


        }

    });

    final Button btBs = (Button) findViewById(R.id.btnAtras);
    btBs.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (numberDisplayed.length() >= 1) {
                numberDisplayed = numberDisplayed.substring(0,
                        numberDisplayed.length() - 1);
            }

            if (playDisplayed.length() >= 1) {
                playDisplayed = playDisplayed.substring(0,
                        playDisplayed.length() - 1);
            }
            updateTextField();
        }
    });

    final Button btClear = (Button) findViewById(R.id.btnClearId);
    btClear.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            numberDisplayed = "";
            playDisplayed = "";
            storedNumber = "";
            plus = false;
            resultNumber = 0d;
            inValor.clearFocus();
            updateTextField();
            mData.clear();
            mAdapter.notifyDataSetChanged();
        }
    });


private void processNumbers() {

    if (plus) {
        resultNumber = calc.sum(Double.parseDouble(numberDisplayed),
                resultNumber); //create a sum
    }else{
        resultNumber = new Double(numberDisplayed);
    }
    numberDisplayed = "";
    updateTextField();
}
4

1 回答 1

0

您不想使用,因为hasFocus()将焦点从 View 当前拥有的任何视图中移开并将其提供给调用者。此外,您应该使用通用侦听器来减少重复代码,如下所示。requestFocus()requestFocus()

创建一个新的类变量:

OnClickListener addClickListener = new OnClickListener() {
    public void onClick(View v) {
        int number = Integer.parseInt(((Button) v).getText().toString());
        if(inJugada.hasFocus()) { // " == true" is implied
            playDisplayed += number;
        }else if(inValor.hasFocus()) {
            numberDisplayed += number;
        }
        updateTextField();
    }
};

并将此侦听器添加到您的 Buttons 0-9:

final Button bt0 = (Button) findViewById(R.id.btnNum0Id);
bt0.setOnClickListener(addClickListener);

// etc.
于 2012-11-12T19:55:21.767 回答