Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当编辑文本发生变化时,计数器似乎不会增加_Java_Android_Onclick_Android Edittext_Switch Statement - Fatal编程技术网

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我会的,下面是完整的代码:您是否尝试记录文本更改侦听器以查看它是否被调用?