热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android项目开发技术总结

一对话框(Dialog)对话框通常有消息提示框、确定取消框、没有安全的提示语1消息框(确定或返回):newBuilder(MainActivity.this).setTitle(白社会).s

一 对话框(Dialog)
对话框通常有消息提示框、确定取消框、没有安全的提示语
1 消息框(确定或返回):
new Builder(MainActivity.this).setTitle("白社会").setIcon(R.drawable.logoico)
   .setMessage("基于搜狐网的应用,所有数据均来自搜狐。/n当前版本V1.0,版权所有?2010")
   .setNegativeButton("返回", new OnClickListener(){
    public void onClick(DialogInterface dialog, int which) {
    }
   }).show();
   break;
   
2 确定取消框(退出系统提示):
new Builder(MainActivity.this).setTitle("提示").setMessage("是否退出?")
     .setPositiveButton("确定", new OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
       finish();
      }
     }).setNegativeButton("取消", new OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
      }
     }).show();
     
3 没有按钮的一句话消息提示()
 if (mother_blood.equals("")) {
     Toast.makeText(XueXing.this, "请选择妈妈的血型!", Toast.LENGTH_SHORT).show();     
    } else if (father_blood.equals("")) {
     Toast.makeText(XueXing.this, "请选择爸爸的血型!", Toast.LENGTH_SHORT).show();

二 添加Menu菜单
1普通菜单(关于、帮助、退出)
public boolean onCreateOptionsMenu(Menu menu) {
  menu.add(1, 1, 1, R.string.help).setIcon(android.R.drawable.ic_menu_help);
  menu.add(1, 2, 2, R.string.about).setIcon(android.R.drawable.ic_menu_info_details);
  menu.add(1, 3, 3, R.string.exit).setIcon(android.R.drawable.ic_menu_close_clear_cancel);
  return super.onCreateOptionsMenu(menu);
 }

2长按菜单(类似右键菜单)
onCreate中注册菜单
registerForContextMenu(mylist);
另外两个函数要写
 @Override
 public boolean onContextItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
   switch(item.getItemId()){   
       case MENU_DETAIL:
        break;
       case MENU_SURE:
        break;
      }
  return super.onContextItemSelected(item);
 }

 @Override
 public void onCreateContextMenu(ContextMenu menu, View v,
   ContextMenuInfo menuInfo) {
  // TODO Auto-generated method stub
   menu.add(0,MENU_DETAIL,0,"查看详细信息");
    menu.add(0,MENU_SURE,0,"确认日期");
    menu.setHeaderTitle("操作");
  super.onCreateContextMenu(menu, v, menuInfo);
 }

三 传送数据到新意图,类似于mobile的 Form.show()
带参数传递,通过Intent和Bundle
       Intent intent = new Intent();
    intent.setClass(YiMiao.this, YiMiaoDetail.class);
    Bundle bundle = new Bundle();
    bundle.putString("YIMIAO_ID", id);
    intent.putExtras(bundle);
    startActivity(intent);
接受参数
    ym_id=bundle.getString("YIMIAO_ID");

另外,一种方法是不通过Bundle,setClass  setString   setInt
再通过this.getIntent().getDate() 取到参数


四 信息提醒
提醒形式:铃声  震动  闪灯  状态栏等


五 日志调试
import android.util.Log;
Log.i("id:", id);
日志方便大家调试和跟踪程序。
Log.i(Verbose) 详细信息
Log.i(Debug) 调试信息
Log.i(Info) 通知信息
Log.i(Warn) 警告信息
Log.i(Error) 错误信息


六 SQLite数据库
1  SQLite OpenHelper
 DatabaseHelper 继承于 SQLiteOpenHelper 用来创建和管理数据库
 onCreate和onUpgrade封装了创建和更新表的方法
2  增删改查CRUD
3  数据库如何部署到真机?
 这个是好多开发者要遇到的实际问题,也是目前还没发现好的解决办法,至少我还没搜到如何解决部署安装。
 
开发总结
借助一个项目学习开发android程序,吃苦头中有所总结和醒悟,特意总结下来,希望对己和他人有所助。
首先,应该学习android开发的基础知识,有所了解,方法属性如此之多,想要全记住没必要,重点是理解知识点,融会贯通。
比如,常用的知识点菜单、对话框、View视图、数据传送、SQLite数据库相关操纵等
第二,有些错误,通常是自己语法或基础知识点掌握不牢,应该加强理解和实践。
修改BUG思路:
1 规范命名,养成好习惯。检查string 和layout 中命名是否缺少,是否正确。
2 检查AndroidManifest.xml是否注册了activity
3 有关方法和属性是否使用得当。
4 数据库相关,语句是否正确,数据库是否打开忘关闭或关闭了又要用。
第三,要在项目开发中逐步提高重实践重思想,只是一味看书学习,到头来也是纸上谈兵,眼高手低。


推荐阅读
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
author-avatar
robinqianqcs521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有