簡體   English   中英

TextWatchers無法正常工作

[英]TextWatchers won't work

我真的很絕望

我被迫在Android App上工作,但我的代碼無法

有三個文本觀察器,一個在第一個行中插入字符后立即向表中添加新行

一秒鍾檢查時間格式

第三個使用endtime-starttime進行十進制時間計算

第一部作品,第二部和第三部不

MainActivity公共類MainActivity擴展了AppCompatActivity {

public TableRow lastRow;
public newRowTextWatcher tw;{
    tw= new newRowTextWatcher(this);}
public Sum sum;{
    sum= new Sum(this);}
public Time24hFormatValidator time24;{
    time24 = new Time24hFormatValidator(this );}  
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tw = new newRowTextWatcher(this);
    time24 = new Time24hFormatValidator(this);

    lastRow = (TableRow) findViewById(R.id.firstRow);


    EditText txt1 = (EditText) findViewById(R.id.etOrderNo);
    EditText txt2 = (EditText) findViewById(R.id.etMachineID);
    EditText txt3 = (EditText) findViewById(R.id.etstarttime);
    EditText txt4 = (EditText) findViewById(R.id.etendtime);
    EditText txt5 = (EditText) findViewById(R.id.etdecimaltime);
    EditText txt6 = (EditText) findViewById(R.id.etrework);
    EditText txt7 = (EditText) findViewById(R.id.etstatus);

    txt3.addTextChangedListener(time24);
    txt4.addTextChangedListener(time24);

    txt1.addTextChangedListener(tw);
    txt2.addTextChangedListener(tw);
    txt3.addTextChangedListener(tw);
    txt4.addTextChangedListener(tw);
    txt5.addTextChangedListener(tw);
    txt6.addTextChangedListener(tw);
    txt7.addTextChangedListener(tw);

newrowtextwatcher

public class newRowTextWatcher implements TextWatcher {
MainActivity ze;

public newRowTextWatcher(MainActivity Zeiterfassung) {
    ze = Zeiterfassung;
}

public void afterTextChanged(Editable editable) {

    EditText txt1 = (EditText) ze.lastRow.getChildAt(0);
    EditText txt2 = (EditText) ze.lastRow.getChildAt(1);
    EditText txt3 = (EditText) ze.lastRow.getChildAt(2);
    EditText txt4 = (EditText) ze.lastRow.getChildAt(3);
    EditText txt5 = (EditText) ze.lastRow.getChildAt(4);
    EditText txt6 = (EditText) ze.lastRow.getChildAt(5);
    EditText txt7 = (EditText) ze.lastRow.getChildAt(6);

    if (txt1.getText().toString().equals("") &&
            txt2.getText().toString().equals("") &&
            txt3.getText().toString().equals("") &&
            txt4.getText().toString().equals("") &&
            txt5.getText().toString().equals("") &&
            txt6.getText().toString().equals("") &&
            txt7.getText().toString().equals(""))
    {
        return;
    }
    else
        ze.AddRow();

驗證器

public class Time24hFormatValidator implements TextWatcher {
MainActivity ze;

public Time24hFormatValidator(MainActivity Zeiterfassung) {
    ze = Zeiterfassung;
}
public void afterTextChanged(Editable editable) {
    EditText txt3 = (EditText) ze.lastRow.getChildAt(3);
    EditText txt4 = (EditText) ze.lastRow.getChildAt(4);


    String str = txt3.getText().toString();
    if(!str.equals(""))
    {
        String[] parts = str.split(":");
        String part1 = parts[0];
        String part2 = parts[1];
        int hours = Integer.parseInt(part1);
        int minutes= Integer.parseInt(part2);

        if (hours>=0 || hours<24)
        {
            return;
        }
        else
            txt3.setText("");
        Toast.makeText(ze.getApplicationContext(), "Wrong", Toast.LENGTH_LONG).show();


        if (minutes>=0 || minutes<60)
        {
            return;
        } else
            txt3.setText("");
        Toast.makeText(ze.getApplicationContext(), "Wrong", Toast.LENGTH_LONG).show();

    }
}}

請幫忙

這個

public void afterTextChanged(Editable editable)

被定義為常規void,請嘗試將@Override放在其上,如下所示,因此它將知道您是指已實現的類中的void。

@Override
public void afterTextChanged(Editable s) {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM