Android 点滴技巧记录(持续更新)

  • ExpandableListView里, 如果在关联的adapter的getChildView()里设置了setOnClickListener监听事件,在expandablelistview.setOnChildClick()绑定子菜单点击事件是没有反应的,原因在于两个监听有冲突,去掉adapter里的监听即可。

  • 先创建一个MyApp来extendsApplication, 然后用publict static Context getMyApp() 来return getApplicationContext(). 这样就可以全局的使用context.

  • 如果需要在static method里启动Activity, 需要在方法里把Context作为参数传进去,像下边这样。否则无法直接启动。
    private static void startApp(Context context)
    	{
    		Intent intent = new Intent(context, MainActivity.class);
    		
    		context.startActivity(intent);
    	}


  • LinkedHashMap用起来一点不比Arraylist差,而且可以按照添加的顺序排序,并且可以用在listview的数据里,不过需要先把linkedHashMap的数据简单转换成list,方法大致如下:
    private LinkedHashMap<Integer, Menu> _mainMenusMap;
    	private LinkedHashMap<Integer, ArrayList<Menu>> _subMenusMap;
    	private ArrayList<Menu> _mainMenusList;
    	private ArrayList<ArrayList<Menu>> _subMenusList;
    	private Context _context;
    	
    	public NavigationDrawerExpandableListAdapter(Context context, LinkedHashMap<Integer, Menu> mainMenusMap, LinkedHashMap<Integer, ArrayList<Menu>> subMenusMap)
    	{
    		this._context = context;
    		this._mainMenusMap = mainMenusMap;
    		this._subMenusMap = subMenusMap;
    		this._mainMenusList = new ArrayList<Menu>();
    		this._subMenusList = new ArrayList<ArrayList<Menu>>();
    		
    		_mainMenusList.addAll(_mainMenusMap.values());
    		_subMenusList.addAll(_subMenusMap.values());
    		
    		Log.i(Thread.currentThread().getStackTrace()[2].getClassName(), "_mainMenusList size is " + _mainMenusList.size());
    		Log.i(Thread.currentThread().getStackTrace()[2].getClassName(), "_subMenusList size is " + _subMenusList.size());
    	}



之后需要用到数据,可以直接采用list数据即可。本例子中用的是expandablelistview,情况稍复杂,但是类似。



  • Fragment 保存状态的问题,尤其是通过按返回按钮时候,返回的fragment通常不是你最后离开时候的状态,原因是返回键按下后,fragment会重新调用 onCreateView, 所以可以在在构造fragment时候,添加一个bundle 作为保存状态用,onPause里保存需要保存的东西,在onCreateView里判断一下bundle是不是为NULL,不是的话就调用出来保存的状态。不要指望onSavedInstance, 这个只有在Activity被销毁,重新创建时候才会调用。 在只有一个Activity, 很多Fragments的情况下,还是自己来保存状态吧。

  • 如果应用中用到了Splash界面的话,启动主界面后,按下返回键是会回到splash界面的,这时候只要在manifest.xml里对splashActivity设置一下noHistory=true属性就可以了,以防止回退到启动界面。

  • EditText不自动获取焦点方法,在其父类View设置,focusable = true; focusable on touchMode = true;

  • 4.2系统后,copyPixelsFromBuffer()之前,需要先调用ByteBuffer的rewind( )byteBuffer的rewind()方法将指针指向0.

  • jni里的方法不能被定义为static

  •  SVN revert 时候如果出现提示不能缺少parent版本不能revert时,可以切到文件夹下执行svn revert --depth infinity 来进行整个文件夹的恢复工作。

  • useLibrary 'org.apache.http.legacy' 解决不能引用deprecated的问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值