MathQuiz是我在香港大学学习Smart Phone这门课程的个人作业,一个用来进行数学测验的android app。 使用API Level 24 with minimum API Level 21,使用AVD (Nexus S with resolution 800X480). 这篇文章将归纳我做这个小项目过程中遇到的难点和收获。
目录结构 这个项目我使用了android studio,app是root目录,manifests是配置文件,java是编写的业务代码文件,res是资源文件。
重要代码demo 页面跳转
Intent intent = new Intent (getBaseContext(), GradeActivity.class); intent.putExtra("ansCorrect" ,ansCorrect); startActivity(intent);
用户输入答案保留两位小数
这里我用了监听用户输入,当用户输入小数位数超过两位时,调用处理函数
boolean checkDecimal (String text) { Boolean ifFormat = false ; if (text.contains("." )) { int index = text.indexOf("." ); if (index + 3 < text.length()) { initPrompt("Warning" ,"If your answers are not integers, please round them to 2 decimal places." ); ifFormat = true ; } } return ifFormat; }
自定义图标提示框
void initPrompt (String txt, String msg) { LayoutInflater inflater = getLayoutInflater(); View dialog = inflater.inflate(R.layout.prompt,(ViewGroup)findViewById(R.id.dialog; AlertDialog.Builder builder = new AlertDialog .Builder(this ); TextView message = (TextView)dialog.findViewById(R.id.tv); message.setText(msg); builder.setTitle(txt); builder.setPositiveButton("OK" , new DialogInterface .OnClickListener() { @Override public void onClick (DialogInterface dialog, int which) { } }); builder.setView(dialog); builder.setIcon(R.drawable.logo); builder.show(); }
<LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:id ="@+id/dialog" android:layout_width ="match_parent" android:layout_height ="match_parent" android:orientation ="horizontal" > <TextView android:layout_margin ="8dp" android:id ="@+id/tv" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="textview show" /> </LinearLayout >
神奇的错误 在我调试代码的过程中控制台出现了这样的错误提示:
10 -22 14 :00 :11 .310 1689 -1689 /com.android.inputmethod.latin E/RichInputConnection: Unable to connect to the editor to retrieve text.10 -22 14 :00 :11 .310 1689 -1689 /com.android.inputmethod.latin D/RichInputConnection: Will try to retrieve text later.
这个错误会导致控制台无法打印信息,给我的调试带来很大的麻烦。我google了很久也没有找到合适的解决方案,最后我重建了一个项目,将相关代码复制才强硬解决了这个问题,如果还有好的方式,希望看到的人能联系我,谢谢了。
附录
项目成果 & github链接