【问题标题】:The counter doesnt seem to increase when ever the edittext changes每当编辑文本更改时,计数器似乎都不会增加
【发布时间】:2013-11-10 21:14:43
【问题描述】:

我正在使用编辑文本,我需要更改编辑文本以将计数器加一但计数器不工作,我的意思是应用程序启动,但计数器似乎没有改变,请帮助这里是代码

public class Numersys extends Activity implements TextWatcher  {
EditText mark1 ,mark2, mark3,mark4,mark5,mark6 , hr1 ,hr2,hr3,hr4,hr5,hr6;
EditText passed, currentavg;
TextView tvnewavg ;
Button calculate;
double marks , curAVG , NewAVG ;
String newCumAVG;


int counter , hrs , curHr , NewHr;




@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.numersys);

    mark1=(EditText)findViewById(R.id.mark1n);
    mark2=(EditText)findViewById(R.id.mark2n);
    mark3=(EditText)findViewById(R.id.mark3n);
    mark4=(EditText)findViewById(R.id.mark4n);
    mark5=(EditText)findViewById(R.id.mark5n);
    mark6=(EditText)findViewById(R.id.mark6n);


    hr1=(EditText)findViewById(R.id.ethour1);
    hr2=(EditText)findViewById(R.id.ethour2);
    hr3=(EditText)findViewById(R.id.ethour3);
    hr4=(EditText)findViewById(R.id.ethour4);
    hr5=(EditText)findViewById(R.id.ethour5);
    hr6=(EditText)findViewById(R.id.ethour6);


    passed=(EditText)findViewById(R.id.etPassCn);
    currentavg=(EditText)findViewById(R.id.etCavgn);

    tvnewavg=(TextView)findViewById(R.id.tvcAVGn);

    mark1.addTextChangedListener(this);
    mark2.addTextChangedListener(this);
    mark3.addTextChangedListener(this);
    mark4.addTextChangedListener(this);
    mark5.addTextChangedListener(this);
    mark6.addTextChangedListener(this);

    calculate=(Button)findViewById(R.id.bAvgCalcn);
@Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            switch(arg0.getId())
            {
            case 0:
                break;
            case 1:

                hrs=Integer.valueOf(hr1.getText().toString());

                marks=Double.valueOf(mark1.getText().toString())*Integer.valueOf(hr1.getText().toString());

                curHr=Integer.valueOf(passed.getText().toString());
                curAVG=Double.valueOf(currentavg.getText().toString())*curHr;

                NewHr= curHr+hrs;
                NewAVG= (marks+curAVG)/NewHr;





                break;
            case 2:

                hrs=Integer.valueOf(hr1.getText().toString())+Integer.valueOf(hr2.getText().toString());

                marks=Double.valueOf(mark1.getText().toString())*Integer.valueOf(hr1.getText().toString())
                        +Double.valueOf(mark2.getText().toString())*Integer.valueOf(hr2.getText().toString());

                curHr=Integer.valueOf(passed.getText().toString());
                curAVG=Double.valueOf(currentavg.getText().toString())*curHr;

                NewHr= curHr+hrs;
                NewAVG= (marks+curAVG)/NewHr;
                break;
            case 3:

                hrs=Integer.valueOf(hr1.getText().toString())+Integer.valueOf(hr2.getText().toString())
                +Integer.valueOf(hr3.getText().toString());

                marks=Double.valueOf(mark1.getText().toString())*Integer.valueOf(hr1.getText().toString())
                        +Double.valueOf(mark2.getText().toString())*Integer.valueOf(hr2.getText().toString())
                        +Double.valueOf(mark3.getText().toString())*Integer.valueOf(hr3.getText().toString());

                curHr=Integer.valueOf(passed.getText().toString());
                curAVG=Double.valueOf(currentavg.getText().toString())*curHr;

                NewHr= curHr+hrs;
                NewAVG= (marks+curAVG)/NewHr;
                break;
            case R.id.bAvgCalcn:

                newCumAVG=String.valueOf(NewAVG);
                tvnewavg.setText(newCumAVG);
            }
        }
    });


}




@Override
public void afterTextChanged(Editable arg0) {

    // TODO Auto-generated method stub

}




@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
        int arg3) {
    // TODO Auto-generated method stub

}




@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

    if(mark1.hasFocus())
    {
        counter = counter+1;
    }
    if(mark2.hasFocus())
    {
        counter = counter+1;
    }
    if(mark3.hasFocus())
    {
        counter = counter+1;
    }
    if(mark4.hasFocus())
    {
        counter = counter+1;
    }
    if(mark5.hasFocus())
    {
        counter = counter+1;
    }
    if(mark6.hasFocus())
    {
        counter = counter+1;
    }
}

【问题讨论】:

  • 只是一个问题,您是否将侦听器设置为editText框?您是否还尝试将counter += 1 放入没有if(..) 块的OnTextChanged 方法中?
  • 快速提示,而不是 counter = counter+1;使用计数器++;做同样的事情,更快更整洁
  • 您还没有显示定义编辑文本和计数器的位置。
  • @kabuto178 我想要一个特定的编辑文本来增加计数器:D
  • @xBroak thx 我会的,这是完整的代码:D

标签: java android onclick android-edittext switch-statement


【解决方案1】:

在我看来,您试图增加一个没有价值的计数器:

int counter;

counter = counter+1; 

理论上应该什么都不做?

尝试将计数器设置为:

int counter = 0; 

试一试,让我知道!

【讨论】:

  • 您是否尝试过记录文本更改侦听器以查看它是否被调用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2020-06-18
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多