Android项目开发—GeoQuiz
- 应用规划
确定功能
必须的界面及界面跳转的流程
...- 界面设计
主界面确定
模块界面、列表、查看、编辑界面
添加需要的组件
...- 数据操作和存储
- 业务实现
- 页面跳转
每个页面间的跳转
菜单、按钮、事件等
开发过程
- 安装Android Studio
- 创建GeoQuiz项目
- 用户界面设计
- 功能设计
- 项目模拟运行
- 在XML文件中定义组件
- 在strings.xml文件中添加我们需要的string字段
- 在XML文件中对控件属性进行设置,添加ID、内容
- 在Activity.java文件中添加相应的成员变量
- 引用生成的视图对象
- 为对象设置监听器以响应用户操作
以Butto控件为例
- ```
- ```python
<resources>
<string name="app_name">GeoQuiz</string>
...
<string name="true_button">True</string>
...
</resources>
- ```
- ```
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
...
}
- ```
public class QuizActivity extends AppCompatActivity {
private Button mTrueButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = (Button) findViewById(R.id.true_button);
}
}
- ```
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = (Button) findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Does nothing yet, but soon!
}
});
mFalseButton = (Button) findViewById(R.id.false_button);
}
}
涉及的知识点
Android与MVC设计模式
MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图、饼图来表示。一种视图模型也可以对于多种逻辑模型。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。activity的生命周期
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。使用intent完成QuizActivity到CheatActivity的数据传递
Intent(意图)主要是解决Android应用的各项组件之间的通讯。
为了实现传递数据这个目的需要以下步骤
Activity1需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,intent可调用putExtra来存放想要传递的数据,然后调用setClass,设置Activity1和欲调用的组件Activity2,最后调用startActivity将构造的Intent传入,系统会根据此Intent中的描述,到Activity1中找到满足此Intent要求的Activity,系统会调用找到的,Activity2最终传入Intent
遇到的问题
导入错的包
按照书本进行项目时可能缺漏某段代码
常出现空指针异常错误