您的位置:首页 > 移动开发 > Android开发

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

2014-09-09 07:10 232 查看
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的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: