- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何为标记为帮助的按钮设置限制点击?我使用模运算符(即 %
)来划分分数 - 对于每 5 个正确答案,帮助按钮将添加加 1 并调用 .setEnabled(true)
,如果帮助按钮值等于 0,该按钮将被禁用。这是我用于更改帮助按钮状态的代码。帮助按钮的用途是消除2个错误答案。
public class QuestionActivity extends Activity {
MediaPlayer mySound;
List<Question> quesList;
int score = 0;
int qid = 0;
int i = 0;
//for help 50/50
int help = score % 5;
int rnd2 ,rnd1;
ProgressBar mProgressBar;
CountDownTimer mCountDownTimer;
// Animation
Animation animFadein;
Question currentQ;
TextView txtQuestion, scored;
Button button1, button2, button3, button4,helpbtn;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client;
public void help (View view){
helpbtn=(Button)findViewById(R.id.helpbtn);
helpbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
help = help - 1;
v.setEnabled(false);
/*if (help == 0 ){
helpbtn.setEnabled(false);
} else {
helpbtn.setEnabled(true);
}
*/
String AnswerString = currentQ.getANSWER();
//match DB answer to selected answer, turn it visible if it is correct
if(button1.getText().equals(AnswerString)){
button1.setVisibility(View.VISIBLE);
}
if(button2.getText().equals(AnswerString)){
button2.setVisibility(View.VISIBLE);
}
if(button3.getText().equals(AnswerString)){
button3.setVisibility(View.VISIBLE);
}
if(button4.getText().equals(AnswerString)){
button4.setVisibility(View.VISIBLE);
}
//random disable 2 incorrect answer
List<Integer> list = Arrays.asList(1, 2, 3, 4);
Collections.shuffle(list);
rnd1 = list.get(0);
rnd2 = list.get(1);
if ((rnd1 == 1) || (rnd2 == 1)){
button1.getText().equals(AnswerString);
button1.setVisibility(View.INVISIBLE);
}
if ((rnd1 == 2) || (rnd2 == 2)){
button2.getText().equals(AnswerString);
button2.setVisibility(View.INVISIBLE);
}
if ((rnd1 == 3) || (rnd2 == 3)){
button3.getText().equals(AnswerString);
button3.setVisibility(View.INVISIBLE);
}
if ((rnd1 == 4) || (rnd2 == 4)){
button4.getText().equals(AnswerString);
button4.setVisibility(View.INVISIBLE);
}
}
});
}
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qestion);
QuizHelper db = new QuizHelper(this); // my question bank class
quesList = db.getAllQuestions(); // this will fetch all questions
currentQ = quesList.get(qid); // the current question
mySound = MediaPlayer.create(this, R.raw.bensoundcute); // music background
mySound.start();
mySound.setLooping(true);
txtQuestion = (TextView) findViewById(R.id.txtQuestion);
// load the textQuestion animation
animFadein = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in);
// the text view in which the question will be displayed
// the 4 buttons,
// the idea is to set the text of 4 buttons with the options from question bank
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
// the text view in which score will be displayed
scored = (TextView) findViewById(R.id.score);
// method which will set the things up for our game
setQuestionView(false);
mProgressBar = (ProgressBar) findViewById(progressbar);
mProgressBar.setMax(100);
mProgressBar.setProgress(i);
mCountDownTimer = new CountDownTimer(30000,300) {
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
@Override
public void onTick(long millisUntilFinished) {
Log.v("Log_tag", "Timer Progress " + i + millisUntilFinished);
i++;
mProgressBar.setRotation(180);
mProgressBar.setProgress(i);
}
@Override
public void onFinish() {
Toast.makeText(getApplicationContext(), "TIME is UP!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(QuestionActivity.this,
ResultActivity.class);
// passing the int value
Bundle b = new Bundle();
b.putInt("score", score); // Your score
intent.putExtras(b); // Put your score to your next
startActivity(intent);
mCountDownTimer.cancel();
finish();
}
};
txtQuestion.setAnimation(animFadein);
txtQuestion.startAnimation(animFadein);
mCountDownTimer.start();
// button click listeners
final MediaPlayer buttonSound = MediaPlayer.create(this, R.raw.play);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonSound.start();
if(mCountDownTimer!=null){
mCountDownTimer.cancel();
}
// passing the button text to other method
// to check whether the answer is correct or not
// same for all three buttons
getAnswer(button1.getText().toString());
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonSound.start();
if(mCountDownTimer!=null){
mCountDownTimer.cancel();
}
getAnswer(button2.getText().toString());
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonSound.start();
if(mCountDownTimer!=null){
mCountDownTimer.cancel();
}
getAnswer(button3.getText().toString());
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonSound.start();
if(mCountDownTimer!=null){
mCountDownTimer.cancel();
}
getAnswer(button4.getText().toString());
}
});
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
@Override
protected void onPause(){
super.onPause();
mySound.release();
finish();
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);
builder.setMessage("Do you want to Exit?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user pressed "yes", then he is allowed to exit from application
dialog.dismiss();
onYesClick();
}
private void onYesClick() {
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
mCountDownTimer.cancel();
finish();
QuestionActivity.this.finish();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//if user select "No", just cancel this dialog and continue with app
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
public void getAnswer(String AnswerString) {
if (currentQ.getANSWER().equals(AnswerString)) {
// if conditions matches increase the int (score) by 1
// and set the text of the score view
// Intent intent = new Intent(this, QuestionActivity.class);
//startActivity(intent);
Toast.makeText(getApplicationContext(), "CORRECT!", Toast.LENGTH_SHORT).show();
score++;
scored.setText("Score: " + score + " /100");
txtQuestion.setAnimation(animFadein);
txtQuestion.startAnimation(animFadein);
}
else {
setQuestionView(false);
// if unlucky start activity and finish the game
Toast.makeText(getApplicationContext(), "Sorry! Better luck next time.", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(QuestionActivity.this, ResultActivity.class);
// passing the int value
Bundle b = new Bundle();
b.putInt("score", score); // Your score
intent.putExtras(b); // Put your score to your next
startActivity(intent);
mCountDownTimer.cancel();
finish();
}
if(qid < 100) {
// if questions are not over then do this
currentQ = quesList.get(qid);
setQuestionView(true);
txtQuestion.setAnimation(animFadein);
txtQuestion.startAnimation(animFadein);
button1.setVisibility(View.VISIBLE);
button2.setVisibility(View.VISIBLE);
button3.setVisibility(View.VISIBLE);
button4.setVisibility(View.VISIBLE);
}
else {
Toast.makeText(getApplicationContext(),
"Game Over.",
Toast.LENGTH_SHORT)
.show();
Intent intent = new Intent(QuestionActivity.this,
ResultActivity.class);
// passing the int value
Bundle b = new Bundle();
b.putInt("score", score); // Your score
intent.putExtras(b); // Put your score to your next
startActivity(intent);
mCountDownTimer.cancel();
finish();
}
}
private boolean setQuestionView(boolean b) {
// the method which will put all things together
txtQuestion.setText(currentQ.getQUESTION());
button1.setText(currentQ.getOPTA());
button2.setText(currentQ.getOPTB());
button3.setText(currentQ.getOPTC());
button4.setText(currentQ.getOPTD());
qid++;
return b;
}
最佳答案
if (currentQ.getANSWER().equals(AnswerString)) {
// if conditions matches increase the int (score) by 1
// and set the text of the score view
// Intent intent = new Intent(this, QuestionActivity.class);
//startActivity(intent);
Toast.makeText(getApplicationContext(), "CORRECT!", Toast.LENGTH_SHORT).show();
score++;
scored.setText("Score: " + score + " /100");
txtQuestion.setAnimation(animFadein);
txtQuestion.startAnimation(animFadein);
if (score%5 == 1 ){
helpbtn.setEnabled(false);
} else {
helpbtn.setEnabled(true);
}
}
注意:在hlpbutton点击监听器中注释启用和禁用帮助按钮并尝试。
关于java - 如何在按钮中使用模数并设置点击限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031499/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!