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:[email protected]’

}

解决方法

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預置定義樣式

时间: 2024-10-12 10:32:48

android开发中遇到的问题汇总【三】的相关文章

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

36.代码规范 http://liuzhichao.com/p/1781.html#more-1781 // Disallow Parent Intercept, just in case ViewParent parent = getParent(); if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); } 38.在纯属布局中,将除最底部以外的的view都设置weight为1就可以了. 39.editvi

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

212.Android WebView常见问题及解决方案汇总 http://blog.csdn.net/t12x3456/article/details/13769731 213.Android check network connectivity on some tablets crash java.lang.NullPointerException at com.xxx.Util.getNetworkState(Util.java:246) 214.What is the equivalen

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

244.http请求的url含有中字符时.须要Uri编码.Uri.encoder() 245.使用androidstudio时,不知道什么原因svn不见了 Android Studio missing Subversion plugin Please make sure that the "SubversionIntegration" plugin is enabled in Preferences > Plugins 246.Error:Execution failed for

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

一. 工具使用 245.使用androidstudio时,不知道什么原因svn不见了 Android Studio missing Subversion plugin Please make sure that the "SubversionIntegration" plugin is enabled in Preferences > Plugins 248.androidstudio 如何自动import用到的类或接口? For Windows/Linux, you can g

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

92. Looks like there is no way to avoid modifications made by the import plugin. All the settings it has is three checkboxes related to dependency management. I tried to uncheck all of them but still it does change my project structure. I managed to

android开发中遇到的问题汇总(五)

127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html 128. Android TextView drawableLeft 在代码中实现 方法1 Drawable drawable= getResources().getDrawable(R.drawable.drawable); /// 这一步必须要做,否则不会显示. drawable.setBounds(0, 0, drawable.getMinimumWi

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

190. Genymotion Crash after a few minutes E/eglCodecCommon(2163): writeFully: failed: Broken pipe http://stackoverflow.com/questions/23855115/genymotion-crash-after-a-few-minutes It's not really caused by your application, so don't worry. It often ha

Android开发中常见的设计模式(三)——观察者模式

先看下这个模式的定义. 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新 先来讲几个情景. 情景1:有一种短信服务,比如天气预报服务,一旦你订阅该服务,你只需按月付费,付完费后,每天一旦有天气信息更新,它就会及时向你发送最新的天气信息. 情景2:杂志的订阅,你只需向邮局订阅杂志,缴纳一定的费用,当有新的杂志时,邮局会自动将杂志送至你预留的地址. 观察上面两个情景,有一个共同点,就是我们无需每时每刻关注我们感兴趣的东西,我们只需做的就是订阅感

android开发中监听器的三种实现方法(OnClickListener)

Android开发中监听器的实现有三种方法,对于初学者来说,能够很好地理解这三种方法,将能更好地增进自己对android中监听器的理解. 一.什么是监听器. 监听器是一个存在于View类下的接口,一般以On******Llistener命名,实现该接口需要复写相应的on****(View v)方法(如onClick(View v)). 二.监听器的三种实现方法 (以OnClickListener为例) 方法一:在Activity中定义一个内部类继承监听器接口(这里是OnClickListener