美文网首页
7-24 页面逻辑

7-24 页面逻辑

作者: _人间客 | 来源:发表于2016-07-24 20:07 被阅读86次

    一、MainActivity

    (一)整体结构(略package+import)

    1.public class MainActivity extends Activity

    1)声明成员变量

    用private,使外部通过get/set方法来获取可以获取的内部数据。Layout里面有什么,activity需要用到什么,就声明什么

    private EditText heightEditText;

    private RadioGroup sexRadioGroup;

    private Button resetButton;

    private String sexString = "男";

    *这里的sexString没有赋初值的话,下面的onCheckedChanged方法就会崩溃。因为默认是选择男,若果测试者不改变选项的话,其实sexString里是没有值的

    2)入口方法 protected void onCreate(Bundle savedInstanceState) 

    目录式结构。只列出会用到的方法

    tip:声明完一个方法后,按Ctrl+1 自动创建方法。

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);//把mainactivity.java和activity_main.xml 联系在一起

    fineViews();//从布局代码中找到相应的控件

    setLisenter();//用于监听。

    3)private void setLisenter()

    监听方法。包含多个内部监听类。给按钮添加点击事件OnClickListener,要重写OnClickListener()方法。当按钮状态转换时系统会自动调用OnCheckedChangeListene方法

    ①sexRadioGroup.setOnCheckedChangeListener ( new OnCheckedChangeListener ( ) {  public void onCheckedChanged(RadioGroup arg0, int arg1 ) {}}      //设置RadioGroup状态转变时的监听。参数是监听对象,创建方法是直接new,然后重写OnCheckedChangeListener()的OnCheckedChangeListener方法

    ②startTestButton.setOnClickListener ( new OnClickListener ( ) { public void onClick( View v) {}})

    4)private void fineViews()

    寻找控件。基本上用到哪个控件,就要在此方法中 find 哪个控件。Ctrl+1 可以自动添加强制类型转换。

    heightEditText = (EditText) findViewById(R.id.height_edt);

    weightEditText = (EditText) findViewById(R.id.weight_edt);

    sexRadioGroup = (RadioGroup) findViewById(R.id.sex_rg);

    startTestButton = (Button) findViewById(R.id.start_test_btn);

    resetButton = (Button) findViewById(R.id.reset_btn);

    (二)局部细节

    1.intent方法

    (1)mainactivity

    Intent intent = new Intent(MainActivity.this,BMIResultActivity.class);

    跳转页面:通过intent类的对象实现,创建intent类对象实现,选择双参数构造方法new Intent(MainActivity.this,BMIResultActivity.class)。参数1:从哪个activity中起跳,参数2:跳到哪个activity中

    intent.putExtra("height", height);

    传递数据:向BMIactivity传递数据用于显示,把要传递的数据放入intent中intent.putExtra(arg1,arg2) arg1是键,arg2是值。通过arg1和arg2,就在intent中保存了一个键值对(一一对应),则可通过键去找相应的值。在取值时一定要保证键相同.

    startActivity(intent);

    实现跳转

    (2)BMIResultActivity

    Intent intent = getIntent();

    取出上个页面的传递值

    double height = intent.getDoubleExtra("height", 0);

    从intent对象中,根据放入值的键来取相应值

    DecimalFormat format = new DecimalFormat("0.00");

    对数据进行格式化 DecimalFormat 构造参数:数据格式字符串。格式化成0.00的格式

    bmiTextView.setText("您的BMI指数为"+format.format(bmi));

    把数据显示到控件上

    2.public void onCheckedChanged(RadioGroup arg0, int arg1)

    参数①:状态改变的RadioGroup对象。参数②:RadioGroup对象中被选中的按钮的Id。根据参数2确定是哪个按钮被选中。内含switch方法或if方法

    3.吐司 Toast.makeText()

    Toast.makeText(MainActivity.this, "您选择的性别是"+sexString, 1).show();

    参数1:上下文,说明在那个页面显示吐司。参数2:显示的内容。参数3:显示的时间(秒)

    4.getText()

    String heightString = heightEditText.getText().toString().trim();

    用getText()取出输入内容,返回值是Editable对象可变字符串。用toString()将其转化为字符串,并用trim()方法去除其中没用的字符,如:回车。

    5.类型转换

    double height = Double.valueOf (heightString)/100;

    6.set方法

    bodyStateImageView.setBackgroundResource(R.drawable.bmi_4);

    bodyStateTextView.setText("您现在处于:\n严重肥胖状态,请立刻减肥");

    在bodyStateTextView这个TextView里放入图片和文字。

    二、BMIResultActivity

    (一)整体结构

    findViews();

    三、规范

    (一)命名

    1.变量命名

    ①全英文,不准有拼音

    ②首字母小写,之后所有单词的首字母大写(驼峰式命名法)

    ③遵循准则

    ④变量名后缀尽量不缩写,全拼(变量种类很多,可能有缩写相同, 无法区分)

    2.类名:所有首字母都大写

    (二)常识

    1.Android 的界面叫activity,包含

    1)名字Activity.java(逻辑代码) 一定是继承自activity类,页面逻辑,一般包含

    1. onCreate(Bundle savedInstanceState) 加载页面时,Android系统调用,程序员只需在oncreate里写逻辑代码

    2. public boolean onOptionsItemSelected(MenuItem item) 菜单逻辑

    3.onOptionsItemSelected(MenuItem item) 菜单某一项被选中

    2)名字.xml 页面的布局文件

    2.代码书写流程。在写方法时,不要马上写方法主逻辑,应该先进行异常处理。当把所有异常处理完成后,再写主逻辑。

    3.注意事项

    1)判断字符串是否为空,用textUtils的isEmpty()方法,而不是用字符串本身(height.isEmpty)

    2) 在代码中用到上下文作为参数进行传递时,一定要确定this确定的是那个类。

    3) activity继承自Context,当有系统方法要求传递Context时,有可能就是传递activity。(Context有很多子类)

    4)前端应用要遵循显示逻辑与数据运算逻辑分离,不能混在一起。activity理想状态只有控制页面显示的代码。

    5) 通过对象来处理页面数据,做到数据逻辑与代码逻辑的分离

    (三)调试

    1.代码错误

    当bug崩溃时,根据logCat的提示(找自己能看懂的代码,比如指示了哪一行出错的错误提示)。根据提示,在这几行打几个断点,用小虫debug。debug会停在断点处,鼠标放上去会浮现变量值等具体情况。之后可用步入等一步步调试。

    如果是数据出错,则顺着数据流一步步查看。(比如BMI项目中的sexString。程序崩溃是因为sexString没有赋初值)

    2.代码没找出错误

    或许编译时出现混乱,点project->clean... 清空编译。在点击右上角DDMS,左侧菜单栏的扩展项目里有“reset adb”。再重新编译。

    3.异常处理

    在写主逻辑前先进行异常处理,如BMI项目中未输入值便点击测试按钮

    if (TextUtils.isEmpty(heightString)) {

    heightEditText.setError ("请输入身高");

    return;}

    相关文章

      网友评论

          本文标题:7-24 页面逻辑

          本文链接:https://www.haomeiwen.com/subject/qbqgjttx.html