2012-11-12 4 views
1

안녕하세요 저는 클릭하여 두 개의 편집 텍스트에 큰 문제점이 있습니다. 12 개의 버튼과 두 개의 편집 텍스트로 된 자체 키패드를 만들었습니다. 첫 번째 편집 텍스트는 입력 번호 만 허용하고 두 번째는 입력 번호 허용 계산을해라. 내 진짜 문제는 내가 처음에만 두 번째 편집 텍스트에 입력 할 수 없다는 것입니다. 여기에 그릴입니다은 다양한 onclick 이벤트를 구현합니다

 *********** ********* 
     * 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 buttondelclr 
     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(); 
} 

답변

0

이 현재 가지고있는 모든보기에서 초점을 이동하여 발신자에게 제공하기 때문에 hasFocus()이 아닌 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(); 
    } 
}; 

을 그리고 당신의 버튼 0-9이 리스너를 추가 :

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

// etc. 
관련 문제