Java 如何使用按钮将文本打印到光标闪烁的编辑文本?
我在android studio中创建了两个EditText对象和10个编号为0到9的按钮对象。我希望我的按钮只为已选择的EditText对象输入相应的编号,即在光标闪烁的EditText中。 让我们假设EditText对象的id-s为input1和input2,以及一、二、三。。。按钮。Java 如何使用按钮将文本打印到光标闪烁的编辑文本?,java,android,android-studio,Java,Android,Android Studio,我在android studio中创建了两个EditText对象和10个编号为0到9的按钮对象。我希望我的按钮只为已选择的EditText对象输入相应的编号,即在光标闪烁的EditText中。 让我们假设EditText对象的id-s为input1和input2,以及一、二、三。。。按钮。 如果您能为我演示一个功能,即仅用于其中一个按钮的功能,我将不胜感激。您可以设置两个EditText对象onfocuschangelister 对于您的0-9按钮,您可以如下所示: ... Button btn
如果您能为我演示一个功能,即仅用于其中一个按钮的功能,我将不胜感激。您可以设置两个
EditText
对象onfocuschangelister
对于您的0-9按钮,您可以如下所示:
...
Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
EditText focusedView;
EditText etInput1, etInput2;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// finding the EditTexts and Buttons with findViewById(), I am skipping that portion
etInput1.setOnFocusChangeListener(focusListener);
etInput2.setOnFocusChangeListener(focusListener);
btn1.setOnClickListener(onClickListener);
btn2.setOnClickListener(onClickListener);
btn3.setOnClickListener(onClickListener);
btn4.setOnClickListener(onClickListener);
btn5.setOnClickListener(onClickListener);
btn6.setOnClickListener(onClickListener);
btn7.setOnClickListener(onClickListener);
btn8.setOnClickListener(onClickListener);
btn9.setOnClickListener(onClickListener);
btn0.setOnClickListener(onClickListener);
}
public View.OnClickListener onClickListener = new View.OnClickListener(){
public void onClick(View view){
focusedView.append((Button)view).getText());
}
}
private OnFocusChangeListener focusListener = new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
focusedView = (EditText)v;
} else {
focusedView = null;
}
}
}
以下代码将很容易帮助您解决问题
public class Calc extends Activity implements View.OnClickListener{
Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
EditText disp;
int op1;
int op2;
String optr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
six = (Button) findViewById(R.id.six);
seven = (Button) findViewById(R.id.seven);
eight = (Button) findViewById(R.id.eight);
nine = (Button) findViewById(R.id.nine);
zero = (Button) findViewById(R.id.zero);
add = (Button) findViewById(R.id.add);
sub = (Button) findViewById(R.id.sub);
mul = (Button) findViewById(R.id.mul);
div = (Button) findViewById(R.id.div);
cancel = (Button) findViewById(R.id.cancel);
equal = (Button) findViewById(R.id.equal);
disp = (EditText) findViewById(R.id.display);
try{
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
seven.setOnClickListener(this);
eight.setOnClickListener(this);
nine.setOnClickListener(this);
zero.setOnClickListener(this);
cancel.setOnClickListener(this);
add.setOnClickListener(this);
sub.setOnClickListener(this);
mul.setOnClickListener(this);
div.setOnClickListener(this);
equal.setOnClickListener(this);
}
catch(Exception e){
}
}
public void operation(){
if(optr.equals("+")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
}
@Override
public void onClick(View arg0) {
Editable str = disp.getText();
switch(arg0.getId()){
case R.id.one:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.two:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.three:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(three.getText());
disp.setText(str);
break;
case R.id.four:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(four.getText());
disp.setText(str);
break;
case R.id.five:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(five.getText());
disp.setText(str);
break;
case R.id.six:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(six.getText());
disp.setText(str);
break;
case R.id.seven:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(eight.getText());
disp.setText(str);
break;
case R.id.eight:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(nine.getText());
disp.setText(str);
break;
case R.id.nine:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(zero.getText());
disp.setText(str);
break;
case R.id.cancel:
op1 = 0;
op2 = 0;
disp.setText("");
disp.setHint("Perform Operation :)");
break;
case R.id.add:
optr = "+";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.sub:
optr = "-";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.mul:
optr = "*";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.div:
optr = "/";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.equal:
if(!optr.equals(null)){
if(op2 != 0){
if(optr.equals("+")){
disp.setText("");
/*op1 = op1 + op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
disp.setText("");/*
op1 = op1 - op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
disp.setText("");/*
op1 = op1 * op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
disp.setText("");/*
op1 = op1 / op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
}
else{
operation();
}
}
break;
}
}
} e here
据我所知,你想在Android上制作一个计算器应用程序。如果是这样的话,那么给予的肯定会帮助你
public class Calc extends Activity implements View.OnClickListener{
Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
EditText disp;
int op1;
int op2;
String optr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
six = (Button) findViewById(R.id.six);
seven = (Button) findViewById(R.id.seven);
eight = (Button) findViewById(R.id.eight);
nine = (Button) findViewById(R.id.nine);
zero = (Button) findViewById(R.id.zero);
add = (Button) findViewById(R.id.add);
sub = (Button) findViewById(R.id.sub);
mul = (Button) findViewById(R.id.mul);
div = (Button) findViewById(R.id.div);
cancel = (Button) findViewById(R.id.cancel);
equal = (Button) findViewById(R.id.equal);
disp = (EditText) findViewById(R.id.display);
try{
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
seven.setOnClickListener(this);
eight.setOnClickListener(this);
nine.setOnClickListener(this);
zero.setOnClickListener(this);
cancel.setOnClickListener(this);
add.setOnClickListener(this);
sub.setOnClickListener(this);
mul.setOnClickListener(this);
div.setOnClickListener(this);
equal.setOnClickListener(this);
}
catch(Exception e){
}
}
public void operation(){
if(optr.equals("+")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
}
@Override
public void onClick(View arg0) {
Editable str = disp.getText();
switch(arg0.getId()){
case R.id.one:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.two:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.three:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(three.getText());
disp.setText(str);
break;
case R.id.four:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(four.getText());
disp.setText(str);
break;
case R.id.five:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(five.getText());
disp.setText(str);
break;
case R.id.six:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(six.getText());
disp.setText(str);
break;
case R.id.seven:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(eight.getText());
disp.setText(str);
break;
case R.id.eight:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(nine.getText());
disp.setText(str);
break;
case R.id.nine:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(zero.getText());
disp.setText(str);
break;
case R.id.cancel:
op1 = 0;
op2 = 0;
disp.setText("");
disp.setHint("Perform Operation :)");
break;
case R.id.add:
optr = "+";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.sub:
optr = "-";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.mul:
optr = "*";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.div:
optr = "/";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.equal:
if(!optr.equals(null)){
if(op2 != 0){
if(optr.equals("+")){
disp.setText("");
/*op1 = op1 + op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
disp.setText("");/*
op1 = op1 - op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
disp.setText("");/*
op1 = op1 * op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
disp.setText("");/*
op1 = op1 / op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
}
else{
operation();
}
}
break;
}
}
} e here
对于您的代码,我希望通过按钮根据光标的位置在EditText对象etInput1或etInput2中输入数字。我不明白focusedView的用法,也不知道它将如何初始化。另外,尝试使用getText()获取按钮的标题显示了一个错误。谢谢,我的应用程序正在按它应该的方式工作。我也了解focusedView的用法。:)@DiptangsuGoswami很高兴它成功了。。我收到了你的要求。。所以我建议这样。。快乐的编码!!