android开发中遇到的问题汇总【三】

  1. 在EditText中插入表情图片 (CharacterStyle&SpannableString) http://gundumw100.iteye.com/blog/904107

    EditText通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢?
    记得android中有个android.text包,这里提供了对文本的强大的处理功能。
    添加图片主要用SpannableString和ImageSpan类:
    Java代码 收藏代码

    Drawable drawable = getResources().getDrawable(id);  
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
        //需要处理的文本,[smile]是需要被替代的文本  
        SpannableString spannable = new SpannableString(getText().toString()+"[smile]");  
        //要让图片替代指定的文字就要用ImageSpan  
        ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);  
        //开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end)  
    //最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12  
        spannable.setSpan(span, getText().length(),getText().length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);    
        setText(spannable); 
    

60.viewpager中嵌套gridview
自定义带表情键盘 android 表情,软键盘冲突解决方案(仿微博等SNS应用) http://blog.csdn.net/jj120522/article/details/9825871
日历 android中ViewPager嵌套GridView引发的一系列UI卡顿不顺畅的问题 http://www.android100.org/html/201403/10/5840.html
Android UI开发篇之 ViewPager+九宫格布局 实现左右滑动 http://blog.csdn.net/janice0529/article/details/17335473
ViewPager+GridView实现宫格横向滑动切换 http://download.csdn.net/detail/yefengyulu/5433913

61.异常:java.lang.ClassCastException: android.view.ViewGroupLayoutParamscannotbecasttoandroid.view.ViewGroupMarginLayoutParams的终极解决方式

思路:从原来的View中直接获取LayoutParams。http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1117/1991.html

62.android4.0的edittext屏蔽输入法时候光标显示问题 通过反射解决 http://www.eoeandroid.com/thread-248276-1-1.html
if (android.os.Build.VERSION.SDK_INT <= 10) {
mEditText.setInputType(InputType.TYPE_NULL);
} else {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try {
Class cls = EditText.class;
Method setSoftInputShownOnFocus;
setSoftInputShownOnFocus = cls.getMethod(“setSoftInputShownOnFocus”, boolean.class);
setSoftInputShownOnFocus.setAccessible(true);
setSoftInputShownOnFocus.invoke(mEditText, false);
} catch (Exception e) {
e.printStackTrace();
}
try {
Class cls = EditText.class;
Method setShowSoftInputOnFocus;
setShowSoftInputOnFocus = cls.getMethod(“setShowSoftInputOnFocus”, boolean.class);
setShowSoftInputOnFocus.setAccessible(true);
setShowSoftInputOnFocus.invoke(mEditText, false);
} catch (Exception e) {
e.printStackTrace();
}
}

63.自定义控件
getContext的使用

自定义android用户控件,使用回调函数实现自定义事件

64.如何获取到,EditView 的 粘贴复制呢(解决) 重写editview控件,onTextContextMenuItem 。http://www.eoeandroid.com/thread-61482-1-1.html

Android学习笔记之通过剪切板传递数据 http://www.it165.net/pro/html/201404/11599.html

Android EditText 取消复制粘贴剪贴功能 http://www.xuebuyuan.com/2038921.html
在API-11以上,也就是Android 3.0以上的版本,这个操作就无效了,需要用到以下方法:

editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() 
    editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

如何捕获Edittext的粘贴方法?http://www.apkbus.com/android-92944-1-1.html
向EditView插入qq表情,并可删除表情或文字 android开发教程 http://cache.baiducontent.com/c?m=9d78d513d99417f41efa950e494d80230e55f0744ddcc76508c3e34984102d564616f4cd27356074c4c40c7071a55e28eee47132690c7af1dd8a9f4baea68f6d6acd3034074fda17528e42f9c84427d620e707a9fa04bdfcaf6c8eaed0d0d95652d751066787f58f5b1714bd35b64b6f&p=80769a47959d18ff57ee927c1c4791&newp=c67f8f5e85cc43be43bd9b7d0b148a231610db2151d6d2176ecf&user=baidu&fm=sc&query=editview%C9%BE%B3%FD%D2%BB%B8%F6&qid=f5bf3b5b0000bd4e&p1=3

65.android EditText插入字符串到光标所在位置

EditText mTextInput=(EditText)findViewById(R.id.input);//EditText对象

int index = mTextInput.getSelectionStart();//获取光标所在位置

String text="I want to input str";

Editable edit = mTextInput.getEditableText();//获取EditText的文字

if (index < 0 || index >= edit.length() ){

       edit.append(text);

}else{

      edit.insert(index,text);//光标所在位置插入文字

 }

66.Android学习笔记:浅析自己的聊天系统的设计思想 http://www.android100.org/html/201406/09/22125.html

67.java 正则表达式(Invalid escape sequence (valid ones are \b \t \n \f \r \” \’ \ ) 请问是啥原因呢?
把你的里面的\全部替换为\即可

68.lineralayou 中的一个view需要指定在底部,只需要把其他的view的weight设为1即可

69.error
NewsCommentDetailActivity

01-20 11:35:28.990: E/AndroidRuntime(6166): java.lang.RuntimeException: Unable to instantiate application com.jetsun.hbfc.core.MyApplication: java.lang.NullPointerException
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.LoadedApk.makeApplication(LoadedApk.java:508)
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4245)
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.ActivityThread.access1400(ActivityThread.java:131)01?2011:35:28.990:E/AndroidRuntime(6166):atandroid.app.ActivityThreadH.handleMessage(ActivityThread.java:1288)
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.os.Handler.dispatchMessage(Handler.java:99)
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.os.Looper.loop(Looper.java:137)
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.ActivityThread.main(ActivityThread.java:4866)
01-20 11:35:28.990: E/AndroidRuntime(6166): at java.lang.reflect.Method.invokeNative(Native Method)
01-20 11:35:28.990: E/AndroidRuntime(6166): at java.lang.reflect.Method.invoke(Method.java:511)
01-20 11:35:28.990: E/AndroidRuntime(6166): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-20 11:35:28.990: E/AndroidRuntime(6166): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-20 11:35:28.990: E/AndroidRuntime(6166): at dalvik.system.NativeStart.main(Native Method)
01-20 11:35:28.990: E/AndroidRuntime(6166): Caused by: java.lang.NullPointerException
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:384)
01-20 11:35:28.990: E/AndroidRuntime(6166): at android.app.LoadedApk.getClassLoader(LoadedApk.java:327)

01-20 04:05:16.637: E/AndroidRuntime(1372): Process: com.jetsun.hbfc:webview, PID: 1372
01-20 04:05:16.637: E/AndroidRuntime(1372): java.lang.RuntimeException: Unable to instantiate application com.jetsun.hbfc.core.MyApplication: java.lang.IllegalStateException: Unable to get package info for com.jetsun.hbfc; is package not installed?
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.LoadedApk.makeApplication(LoadedApk.java:561)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4491)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.ActivityThread.access1500(ActivityThread.java:144)01?2004:05:16.637:E/AndroidRuntime(1372):atandroid.app.ActivityThreadH.handleMessage(ActivityThread.java:1339)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.os.Handler.dispatchMessage(Handler.java:102)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.os.Looper.loop(Looper.java:135)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.ActivityThread.main(ActivityThread.java:5221)
01-20 04:05:16.637: E/AndroidRuntime(1372): at java.lang.reflect.Method.invoke(Native Method)
01-20 04:05:16.637: E/AndroidRuntime(1372): at java.lang.reflect.Method.invoke(Method.java:372)
01-20 04:05:16.637: E/AndroidRuntime(1372): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
01-20 04:05:16.637: E/AndroidRuntime(1372): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
01-20 04:05:16.637: E/AndroidRuntime(1372): Caused by: java.lang.IllegalStateException: Unable to get package info for com.jetsun.hbfc; is package not installed?
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:410)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.LoadedApk.getClassLoader(LoadedApk.java:363)
01-20 04:05:16.637: E/AndroidRuntime(1372): at android.app.LoadedApk.makeApplication(LoadedApk.java:554)

70.解决eclipse闪退的办法 http://blog.csdn.net/ieicihc/article/details/9629991
方法1.最好解决办法:
删除文件 [workspace]/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi

方法2.在文件eclipse/configuration/config.ini末尾加上如下一行:

    org.eclipse.swt.browser.DefaultType=mozilla

71.Android WebView的前进、后退、与刷新
mWebView.goBack(); //后退
mWebView.goForward();//前进
mWebView.reload(); //刷新

72.You must call removeView() on the child’s parent first
在做alertdialog是的时候报了这么一个错误:

java.lang.IllegalStateException: 
The specified child already has a parent. 
You must call removeView() on the child‘s parent first.

搞了许久,终于理解了。

et1 = (EditText)findViewById(R.id.editText1);
builder.setView(et1);  -- AlertDialog.Builder builder
et1我写在了xml里面,这样报错,原因是一女不可二嫁。

et1的parent即是R.layout.main 又是AlertDialog。

自然就报错了要你removeView()了。

解决方法有两种

1.动态生成EditText

et1 = new EditText(this);
builder.setView(et1);
2. 放在另一个xml中,用inflater

LayoutInflater inflater = LayoutInflater.from(this);  
        View textEntryView = inflater.inflate(R.layout.test1, null);  
        et1 = (EditText)textEntryView.findViewById(R.id.editText1);
builder.setView(textEntryView ); 注意这里是textEntryView ,不是et1 

73.
Activity切换动画无效(android:windowIsTranslucent)影响(android:windowAnimationStyle) http://blog.csdn.net/xuewater/article/details/36398803

style里面设置了android:windowIsTranslucent这个属性

74.
Android 解决程序启动时的黑屏问题 http://blog.csdn.net/fancylovejava/article/details/39643449
android 界面切换黑屏处理从A切换到B的过程中出现黑屏,可以在Manifest文件中改变B的theme,在theme里添加true,这样从A到B的过程中,因为B是透明的,所以背景就是A。这样的用户体验比较好

75.
atvity主题加透明属性 如下: true
在该atvtivity中使用webview。 webview中有videos,可以播放视频,点击视频全屏后,导致其上级fragmentactivity重新加载,导致内容空白。

76.打包过程中出现错误 Unexpected error while computing stack sizes:
java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [12] invokevirtual #96 in [cn/jpush/android/a/a.()V])

解决办法: 如何在代码时混淆忽略 jpush-sdk-release.jar? http://www.xuebuyuan.com/1683269.html

请下载最新的proguard.jar,   umeng官方最新的试了也是有问题,估计兼容型的不好吧,采用http://download.csdn.net/detail/msn465780/6625061这个 ok。
并替换你Android Sdk "tools\proguard\lib\proguard.jar"
在你的proguard.cfg加上代码:
-dontwarn
cn.jpush.**
-keep class cn.jpush.** { *; }

77.android eclipse设置的断点无效的解决方案
1.排除 Run——Skip All Breakpoints
2.排除断点无效的activity所在的进程是否是主进程。

78.极光推送富媒体
推送富媒体时,推送模版其实是通知,推送文件其实是自定义消息类型
通知 vs. 自定义消息 http://docs.jpush.cn/pages/viewpage.action?pageId=3309701
富文本页面 Javascript 回调API http://docs.jpush.cn/pages/viewpage.action?pageId=7536748
Rich Push 开发指南 http://docs.jpush.cn/pages/viewpage.action?pageId=7536799

79.内部跳转 Routable for Android

80.fjrefox firebug插件。chrome 自身F12都可以方便的查看并且编辑html

81 带有凭证的activity 必须在一个进程中。否则凭证会为空。还有一点在调试的时候,非主进程无法和主进程跳转调试。

82.apktool反编译过程中出现如下错误

Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
    at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:56)
    at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:491)
    at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:74)
    at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:66)
    at brut.androlib.Androlib.getResTable(Androlib.java:50)
    at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:189)
    at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)
    at brut.apktool.Main.cmdDecode(Main.java:146)
    at brut.apktool.Main.main(Main.java:77)
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000
    at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)
    at brut.androlib.res.decoder.StringBlock.read(StringBlock.java:44)
    at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:102)
    at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:83)
    at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)
    ... 8 more

由于使用新的adt,而反编译的apktool.jar不是最新的导致。使用新的apktool.jar替换原来的就可以了。官方下载地址 https://code.google.com/p/android-apktool/

83.渠道打包工具

84.

https://www.genymotion.com/#!/developers/user-guide#license
http://blog.csdn.net/langyuewu/article/details/39196653

需要翻墙。部分需要付费

85.
使用Vitamio打造自己的Android万能播放器

86.
Ctrl+Shift+F7 可以高亮当前元素在当前文件中的使用
Android Studio 如何提示函数用法? 先选中,然后按F2

87.

android 提供的很多List控件如 listview、gridview 默认都会显示一个fadingedge的东西,它在View的top和bottom处各显示一个渐变半透的阴影以达到更好的视觉效果,但是这个带来的副作用就是导致在性能不是那么强劲的机器上,一些listview,gridview的拖动会显得很不流畅,因为我们知道绘制带Alpha的图片是最耗时的。 

我们的优化思路就是对这个fadingedge做一些修改,当view处于滚动状态时,通过接口setVerticalFadingEdgeEnabled(false)让其不显示fadingedge,当view处于静止状态时,通过接口setVerticalFadingEdgeEnabled(true)恢复显示fadingedge。以上的listview和gridview等控件都是继承与AbsListView,所以我们直接修改framework中的AbsListView.java文件,就可以达到系统级的改动效果了。 

88.
从github上clone下来swipebacklayout
编译报错查看log为 android-studio llij.ide.plugins.PluginManager - null

修改方法
tasks.withType(Compile) { options.encoding = “UTF-8” }
改为
tasks.withType(JavaCompile) { options.encoding = “UTF-8” }

89.
Error:Execution failed for task ‘:hBFC:compileDebugNdk’.

NDK not configured.
Download the NDK from http://developer.android.com/tools/sdk/ndk/.Then add ndk.dir=path/to/ndk in local.properties.
(On Windows, make sure you escape backslashes, e.g. C:\ndk rather than C:\ndk)

90.Error:(8, 0) Could not find property ‘ANDROID_BUILD_SDK_VERSION’ on project ‘:ActionBar-PullToRefresh’.
dependencies {
compile ‘com.github.castorflex.smoothprogressbar:library:0.4.+@aar’
}
解决方法
I think you should also import ‘SmoothProgressBar’ library in your project https://github.com/castorflex/SmoothProgressBar

91.

。@+id:宣告一個id值來識別控制項

。@id:透過id值引用控制項

。android:id:透過id值, 引用Android系統內部的資源

。?android:attr:引用Android預置定義樣式

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。