1

我正在设计一个简单的应用程序来计算钩针编织/针织中的行数和针数,但我遇到了问题。实际计数本身只是一个经过修改的计算器:显示一个包含当前针数的文本字段,以及允许您在计数中加或减 1、5 或 10 的按钮。问题是,在模拟器中按下按钮不起作用 - 东西编译没有问题并且构建没有问题,所以我认为这是我(没有)做过的小事。

我的主文件:

public class mainCount extends Activity {

    private EditText Scr; //Textbox screen
    private int NumberBF; //saves screen before pressing button operations
    private String Operation;
    private ButtonClickListener btnClick;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Scr = (EditText) findViewById(R.id.stitchCount);

        int idList[] = {R.id.stitchMin1, R.id.stitchMin5, R.id.stitchMin10, R.id.stitchPlus1, R.id.stitchPlus5, R.id.stitchPlus10, R.id.clearButton};

        for(int id:idList){
            View v;
            v = (View) findViewById(id);
            v.setOnClickListener(btnClick);
        }
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main_count, menu);
    return true;
}

public void mMath(String str){
    NumberBF = Integer.parseInt(Scr.getText().toString());
    Operation = str;
    Scr.setText("0");

}

private void getKeyboard(String str){
    String ScrCurrent = Scr.getText().toString();
    if(ScrCurrent.equals("0"))
        ScrCurrent = "";
    ScrCurrent += str;
    Scr.setText(ScrCurrent);
}

public void mResult(String str){
    int NumAf = Integer.parseInt(Scr.getText().toString());
    int result = 0;
    if(str.equals("+1")){
        result = NumAf + 1;
    }
    if(str.equals("+5")){
        result = NumAf + 5;
    }
    if(str.equals("+10")){
        result = NumAf + 10;
    }
    if(str.equals("-1")){
        result = NumAf - 1;
    }
    if(str.equals("-5")){
        result = NumAf - 5;
    }
    if(str.equals("-10")){
        result = NumAf - 10;
    }
    Scr.setText(String.valueOf(result));
}

// ButtonListener class

private class ButtonClickListener implements View.OnClickListener{
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.clearButton: //Clears stitches for this row
                Scr.setText("0");
                NumberBF = 0;
                Operation = "";
                break;
            case R.id.stitchPlus1:
                Operation = "+1";
                mResult(Operation);
                break;
            case R.id.stitchPlus5:
                Operation = "+5";
                mResult(Operation);
                break;
            case R.id.stitchPlus10:
                Operation = "+10";
                mResult(Operation);
                break;
            case R.id.stitchMin1:
                Operation = "-1";
                mResult(Operation);
                break;
            case R.id.stitchMin5:
                Operation = "-5";
                mResult(Operation);
                break;
            case R.id.stitchMin10:
                Operation = "-10";
                mResult(Operation);
                break;
            default:
                String numb = ((Button) v).getText().toString();
                getKeyboard(numb);
                break;
        }
    }
}

}

4

1 回答 1

1

您没有初始化 btnClick ButtonClickListener。尝试将您的代码更改为以下内容:

btnClick = new ButtonClickListener();
for(int id:idList){
    View v;
    v = (View) findViewById(id);
    v.setOnClickListener(btnClick);
}
于 2013-10-09T22:16:55.833 回答