在事件侦听器中,如何从语句中调用函数



我一直在做一个小项目,我在实施我的想法方面遇到了问题。我要构建的应用程序是一个教育应用程序,它会提供随机的基本数学( , - ,*,/(问题,如果学生正确地说,它应该显示下一个问题,否则,它应该给他/她再次尝试的另一个机会。

我的问题是在最后一部分中特别落下的,我写了一个函数来显示下一个问题,但是当按下按钮时,我不知道该如何调用。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;
import java.util.Random;
import static java.lang.String.valueOf;

public class MainActivity extends AppCompatActivity {
    TextView    fN;
    TextView    sN;
    TextView    oP;
    TextView    out;
    TextView    ht;
    EditText    ans;
    Button      btn;
    int answer;
    int fNum;
    int sNum;
    int opNum;
    Random r;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ht.setVisibility(View.GONE);
        final String[]    ops    = {"+","-","÷","×"};
        final String[]    pass   = {
                                    "Very good!",
                                    "Excellent!",
                                    "Nice work!",
                                    "Keep up the good work!"
        };
        final String[]    fail   = {
                                    "No. Please try again.",
                                    "Wrong. Try once more.",
                                    "Don't give up!",
                                    "No. Keep trying."
        };
        public static void nextQ() {
            //UI variables
            fN = findViewById(R.id.fN);
            sN = findViewById(R.id.sN);
            oP = findViewById(R.id.oP);
            out = findViewById(R.id.out);
            ans = findViewById(R.id.Ans);
            btn = findViewById(R.id.btn);
            //functionalities variables
            r = new Random();
            fNum = r.nextInt(9);
            sNum = r.nextInt(9);
            opNum = r.nextInt(ops.length);
            if (opNum == 0)
                answer = fNum + sNum;
            if (opNum == 1)
                answer = fNum - sNum;
            if (opNum == 2)
                answer = fNum / sNum;
            if (opNum == 3)
                answer = fNum * sNum;
            ht.setText(answer);
        }
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ht = findViewById(R.id.hText);

                fN.setText(fNum);
                sN.setText(sNum);
                oP.setText(ops[opNum]);
                int usrAns = Integer.parseInt(valueOf(ans.getText()));
                int rMSG   = r.nextInt(pass.length);
                if(answer == usrAns)
                    out.setText(""+pass[rMSG]);
                    nextQ();
                if(answer != usrAns)
                    out.setText(""+fail[rMSG]);
            }
            });
    }
}

尝试放置此代码&检查它是否有效?

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
import static java.lang.String.valueOf;
public class MainActivity extends AppCompatActivity {
   TextView fN;
   TextView sN;
   TextView oP;
   TextView out;
   TextView ht;
   EditText ans;
   Button btn;
   int answer;
   int fNum;
   int sNum;
   int opNum;
   Random r;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ht.setVisibility(View.GONE);
    btn = findViewById(R.id.btn);
    fN = findViewById(R.id.fN);
    sN = findViewById(R.id.sN);
    oP = findViewById(R.id.oP);
    out = findViewById(R.id.out);
    ans = findViewById(R.id.Ans);
    final String[] ops = {"+", "-", "÷", "×"};
    final String[] pass = {
            "Very good!",
            "Excellent!",
            "Nice work!",
            "Keep up the good work!"
    };
    final String[] fail = {
            "No. Please try again.",
            "Wrong. Try once more.",
            "Don't give up!",
            "No. Keep trying."
    };
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ht = findViewById(R.id.hText);

            fN.setText(fNum);
            sN.setText(sNum);
            oP.setText(ops[opNum]);
            int usrAns = Integer.parseInt(valueOf(ans.getText()));
            int rMSG = r.nextInt(pass.length);
            if (answer == usrAns)
                out.setText("" + pass[rMSG]);
            nextQ();
            if (answer != usrAns)
                out.setText("" + fail[rMSG]);
        }
    });
}
public void nextQ() {
    //functionalities variables
    r = new Random();
    fNum = r.nextInt(9);
    sNum = r.nextInt(9);
    opNum = r.nextInt(ops.length);
    if (opNum == 0)
        answer = fNum + sNum;
    if (opNum == 1)
        answer = fNum - sNum;
    if (opNum == 2)
        answer = fNum / sNum;
    if (opNum == 3)
        answer = fNum * sNum;
    ht.setText(answer);
}
}

从函数 nextQ()中删除 static。并将其从onCreate()中删除。将其放在onCreate()上。功能看起来像:

onCreate(){ ...  }
public void nextQ() {
....
}

称其为

MainActivity.this.nextQ();

删除下面的代码表格nextQ()并放入onCreate()方法:

fN = findViewById(R.id.fN);
sN = findViewById(R.id.sN);
oP = findViewById(R.id.oP);
out = findViewById(R.id.out);
ans = findViewById(R.id.Ans);
btn = findViewById(R.id.btn);

最新更新