今天主要改了设置页面的提示框以及按钮的闪退问题:

activity_calculators .class
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.AlertDialog;
import android.content.Intent;
import android.widget.TextView;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.content.DialogInterface;
import android.widget.Toast; public class activity_calculators extends AppCompatActivity {
private Button begin;
EditText b,min,sec; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculators);
begin=(Button)findViewById(R.id.button1); b=(EditText)findViewById(R.id.editText2);
min=(EditText)findViewById(R.id.editText3);
sec=(EditText)findViewById(R.id.editText4);
begin.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();
String tishu=b.getText().toString();//获取输入的数值
String minute=min.getText().toString();//获取输入的数值
String second=sec.getText().toString();//获取输入的数值
Bundle bundle = new Bundle();
bundle.putString("tishu", tishu);
bundle.putString("minute", minute);
bundle.putString("second", second);
intent.putExtras(bundle);//将题目数量传入下一个页面 这是一个方法
if (second.length() == 0 || minute.length() == 0 ) {
AlertDialog.Builder builder1 = new AlertDialog.Builder(activity_calculators.this)
.setMessage("设置有误,请完善!")
.setPositiveButton("确认", new DialogInterface.OnClickListener() {//弹出窗口 @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
builder1.create().show();
}
if (second.length() != 0 &&minute.length() != 0 ) {
intent.setClass(activity_calculators.this, CalculatorActivity.class);//跳转
startActivity(intent);
// activity_calculators.this.finish();
}
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon(android.R.drawable.ic_menu_edit);
menu.add(Menu.NONE, Menu.FIRST + 3, 6, "帮助").setIcon(android.R.drawable.ic_menu_help);
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Menu.FIRST + 2:
Toast.makeText(this, "保存菜单被点击了", Toast.LENGTH_LONG).show();
break;
case Menu.FIRST + 3:
Toast.makeText(this, "帮助菜单被点击了", Toast.LENGTH_LONG).show(); break;
}
return false;
}
} 按钮的闪退(偶尔)问题: 本来以为是因为如下所说的原因,但改完之后仍报错,继续在其他页面找问题,最后发现是出题页的class没有判断出题是除法时分母不为0的问题,

在这里加一个判断分母是0 即可,而且这个位置要加在第一个位置上面!首先就要判断他是不是0.

Calculator.class(最终版)

import android.os.Build;
import android.os.Bundle;
import java.util.Random;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.AlertDialog;
import android.app.Activity;
import android.content.Intent;
import android.support.annotation.RequiresApi;
import android.text.InputType;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.DialogInterface;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
;
public class CalculatorActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator); LinearLayout linearLayout = (LinearLayout)findViewById(R.id.viewObj);
RelativeLayout relativeLayout = new RelativeLayout(this); Intent inten = getIntent();
Bundle bundle = inten.getExtras();
String tishu = bundle.getString("tishu");//接收传过来的题目的数量 String min = bundle.getString("minute");
String sec = bundle.getString("second");//接收时间 int i1 = 0, minute = 0, second = 0;
try {
i1 = Integer.parseInt(tishu);//i1在这里是题目数量的整形值
minute = Integer.parseInt(min);
second = Integer.parseInt(sec);
} catch (NumberFormatException e) {
e.printStackTrace();
} final EditText[] input = new EditText[i1];
TextView[] showti = new TextView[i1];
final int[] shu1 = new int[i1];
final int[] shu2 = new int[i1];
final int[] result = new int[i1];
final String[] user = new String[i1];
final String[] show = new String[i1];
LinearLayout ll = (LinearLayout) findViewById(R.id.viewObj); Random r = new Random();
char[] ch = {'+', '-', '×', '÷'}; //字符数组 final Chronometer ch1 = new Chronometer(this);
ch1.setBase(SystemClock.elapsedRealtime());
ch1.setFormat("已用时间:%s");
ch1.start();
ll.addView(ch1);
for (int i = 0; i < i1; i++) {
int index = r.nextInt(ch.length); //随机数,小于数组的长度数, 0~3
char flag = ch[index];//获取运算符号
String d = String.valueOf(flag);//运算符
show[i] = "";
int a = (int) (Math.random() * 100);
int b = (int) (Math.random() * 100); shu1[i] = a;
shu2[i] = b; while ((d.equals("+") && (a + b > 100)) || (d.equals("-") && (a - b <= 0)) || (d.equals("×") && (a > 9 || a < 1 || b > 9 || b < 1)) || (d.equals("÷") && (b==0||a / b > 9 || a % b != 0 || a > 81 || b > 9 || a < b))) {
a = (int) (Math.random() * 100);
b = (int) (Math.random() * 100);
} if (d.equals("+"))
result[i] = a + b;
else if (d.equals("-"))
result[i] = a - b;
else if (d.equals("×"))
result[i] = a * b;
else
result[i] = a / b;
String sa = Integer.toString(a);
String sb = Integer.toString(b);
showti[i] = new TextView(this);
show[i] += "\n" + sa + d + sb + "=";
showti[i].setTextSize(20);
showti[i].setText(show[i]);
showti[i].setId(View.generateViewId());
input[i] = new EditText(this);
input[i].setTextSize(25);
input[i].setInputType(InputType.TYPE_CLASS_NUMBER);
input[i].setId(View.generateViewId());
input[i].setEms(6);
RelativeLayout.LayoutParams layoutParams =
new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
if(i == 0)
{
layoutParams.setMargins(250,0,0,0);
showti[i].setLayoutParams(layoutParams);
relativeLayout.addView(showti[i]);
}
else {
layoutParams.addRule(RelativeLayout.BELOW,showti[i-1].getId());
layoutParams.setMargins(250,0,0,0);
showti[i].setLayoutParams(layoutParams);
relativeLayout.addView(showti[i]);
} layoutParams =
new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.RIGHT_OF,showti[i].getId());
if(i != 0)layoutParams.addRule(RelativeLayout.BELOW,showti[i-1].getId());
input[i].setLayoutParams(layoutParams);
relativeLayout.addView(input[i]);
}
linearLayout.addView(relativeLayout);
final Button finish = new Button(this);
finish.setText("完成");
LinearLayout.LayoutParams layoutParams =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
finish.setLayoutParams(layoutParams);
linearLayout.addView(finish); final int timeover = minute * 60 + second; ch1.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer arg0) {
// TODO Auto-generated method stub
if(SystemClock.elapsedRealtime()-ch1.getBase()>=timeover*1000){
AlertDialog.Builder builder1 = new AlertDialog.Builder(CalculatorActivity.this)
.setMessage("时间到!")
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { for (int i = 0; i < shu1.length; i++) {
if (TextUtils.isEmpty(input[i].getText())) {
user[i] = "未作答";
} else {
user[i] = input[i].getText().toString();
}
}
String time = ch1.getText().toString();
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putIntArray("shu1", shu1);//产生的数字
bundle.putIntArray("shu2", shu2);//产生的数字
bundle.putStringArray("user", user);//算的结果
bundle.putStringArray("show", show);//产生的算式
bundle.putIntArray("result", result);//正确的结果
bundle.putString("time", time);//使用的时间
intent.putExtras(bundle);
intent.setClass(CalculatorActivity.this, resultActivity.class);//跳转
startActivity(intent);
// CalculatorActivity.this.finish();
dialog.dismiss();
}
}); builder1.create().show(); finish.callOnClick();
} }
}); finish.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {//触及按钮事件完成页面跳转 进入答案页面
// TODO Auto-generated method stub for (int i = 0; i < user.length; i++) {
if (TextUtils.isEmpty(input[i].getText())) {
user[i] = "未作答";
} else {
user[i] = input[i].getText().toString();
}
}
ch1.stop();
String time = ch1.getText().toString();
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putIntArray("shu1", shu1);//产生的数字
bundle.putIntArray("shu2", shu2);//产生的数字
bundle.putStringArray("user", user);//算的结果
bundle.putStringArray("show", show);//产生的算式
bundle.putIntArray("result", result);//正确的结果
bundle.putString("time", time);//使用的时间
intent.putExtras(bundle);
if(SystemClock.elapsedRealtime()-ch1.getBase()<timeover*1000){
intent.setClass(CalculatorActivity.this, resultActivity.class);//跳转
startActivity(intent);
// CalculatorActivity.this.finish();//注释了这句话按手机上的返回键可以返回上一层
}
}
});
}
}

												

最新文章

  1. AngularJS中的route可以控制页面元素的改变,使多页面变成一个单页面。。。
  2. AC日记——字符串P型编码 openjudge 1.7 31
  3. Understanding Kafka Consumer Groups and Consumer Lag
  4. Python 基礎 - 認識模塊
  5. iOS8以后 UISearchController的用法
  6. MyEclipse8.5 以debug模式启动tomcat6.0服务器 报错cannot connect to vm。
  7. 使用Less color函数创建专业网站配色方案
  8. jquery、js全选反选checkbox
  9. oracle 绿色版本 instantclient 使用说明
  10. jsp的url后跟中文参数传参出现乱码
  11. 逻辑很重要:一句sql语句的事,自己却想了半天,绕了个大弯子
  12. leetcode Count and Say python
  13. Swift - String与NSString的区别,以及各自的使用场景
  14. UIButton 关灯小实验
  15. JavaScript表单
  16. vscode中vue代码颜色插件
  17. NRF51822模块无法识别问题解决办法
  18. IDEA开发工具的学习
  19. 对java多态的理解
  20. 如何练习打字之用英文写文章 &amp; 如何调养右手之用左手握鼠标

热门文章

  1. 解密httpclient,dbcp,jedis,c3p0,druid,okhttp都在使用的连接池技术
  2. python运维开发常用模块(三)DNS处理模块dnspython
  3. thinkphp的普通查询与表达式查询
  4. jenkins+sonarqube进行代码质量检测
  5. HTML+css基础 Text文本属性
  6. 《 .NET并发编程实战》阅读指南 - 第5章
  7. spring好文章整理
  8. Ubuntu 16.04 ssh协议连接root管理员用户
  9. Linq 用得太随意导致的性能问题一则
  10. Delphi - 利用TRzTrayIcon实现WinFrm工程最小化到托盘