Java 当编辑文本发生变化时,计数器似乎不会增加
我使用编辑文本,我需要当编辑文本被更改为递增一个计数器,但计数器不工作时,我的意思是应用程序启动,所有内容似乎都没有更改,但计数器似乎没有更改。请帮助这里的代码Java 当编辑文本发生变化时,计数器似乎不会增加,java,android,onclick,android-edittext,switch-statement,Java,Android,Onclick,Android Edittext,Switch Statement,我使用编辑文本,我需要当编辑文本被更改为递增一个计数器,但计数器不工作时,我的意思是应用程序启动,所有内容似乎都没有更改,但计数器似乎没有更改。请帮助这里的代码 public class Numersys extends Activity implements TextWatcher { EditText mark1 ,mark2, mark3,mark4,mark5,mark6 , hr1 ,hr2,hr3,hr4,hr5,hr6; EditText passed, currentavg;
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;
}
}
在我看来,您试图增加一个没有值的计数器:
int counter;
counter = counter+1;
理论上应该什么都不做吗
尝试将计数器设置为:
int counter = 0;
试试看,让我知道 只是一个问题,您是否将侦听器设置为编辑文本框?另外,您是否尝试将
counter+=1
放入OnTextChanged
方法中,而不使用if(…)
块?快速提示,而不是counter=counter+1;使用计数器++;做同样的事情,更快更整洁您还没有显示您定义了EditText和计数器的位置。@kabuto178我想要一个特定的EditText来增加计数器:D@xBroakthx我会的,下面是完整的代码:您是否尝试记录文本更改侦听器以查看它是否被调用?