Android问题集锦

来源:互联网 发布:索尼手机无法连接网络 编辑:程序博客网 时间:2024/05/15 08:02

1. ViewPager+Fragment滑动界面 在按home键的时候,出现java.lang.NullPointerException 

07-14 16:10:37.412: D/dalvikvm(13466): Debugger has detached; object registry had 1 entries
07-14 16:12:11.982: D/AndroidRuntime(13466): Shutting down VM
07-14 16:12:11.982: W/dalvikvm(13466): threadid=1: thread exiting with uncaught exception (group=0x41c2ed58)
07-14 16:12:11.982: E/AndroidRuntime(13466): FATAL EXCEPTION: main
07-14 16:12:11.982: E/AndroidRuntime(13466): Process: com.big.music.setting, PID: 13466
07-14 16:12:11.982: E/AndroidRuntime(13466): java.lang.NullPointerException
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.Activity.performSaveInstanceState(Activity.java:1171)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1223)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3167)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3226)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.ActivityThread.access$1100(ActivityThread.java:141)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1229)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.os.Handler.dispatchMessage(Handler.java:102)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.os.Looper.loop(Looper.java:136)
07-14 16:12:11.982: E/AndroidRuntime(13466): at android.app.ActivityThread.main(ActivityThread.java:5047)
07-14 16:12:11.982: E/AndroidRuntime(13466): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 16:12:11.982: E/AndroidRuntime(13466): at java.lang.reflect.Method.invoke(Method.java:515)
07-14 16:12:11.982: E/AndroidRuntime(13466): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-14 16:12:11.982: E/AndroidRuntime(13466): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
07-14 16:12:11.982: E/AndroidRuntime(13466): at dalvik.system.NativeStart.main(Native Method)
07-14 16:12:13.962: I/Process(13466): Sending signal. PID: 13466 SIG: 9


原因:没有设置fragment layout xml的id,导致save的时候出错。

解决办法:在fragment的layout xml 都添加 android id name, 比如 android:id="@+id/fragment1"


2.  [转]

问题:连接加密的热点 就可以连接,连接不加密的热点不能连接。addNetwork这个操作总是返回-1 

代码如下:这是connect

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. public static boolean Connect(String SSID, String Password, int Type) {           
  2.         WifiConfiguration wifiConfig = createWifiInfo(SSID, Password, Type);          
  3.         if (wifiConfig == null) {  
  4.         Log.v(TAG,"wifiConfig == null");  
  5.             return false;  
  6.         }  
  7.         int netID = settingWifiAdmin.wifiManager.addNetwork(wifiConfig);  
  8.         Log.v(TAG,"netID = "+netID);//连不加密AP总是返回-1    
  9.         boolean bRet = settingWifiAdmin.wifiManager.enableNetwork(netID, true);  
  10.         return bRet;  
  11.     }  


[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /*** 
  2.      * 配置要连接的WIFI热点信息     
  3.      * @param SSID 
  4.      * @param password 
  5.      * @param type  加密类型 
  6.      * @return 
  7.      */       
  8.     public static WifiConfiguration createWifiInfo(String SSID, String password, int type) {    
  9.           
  10.         Log.e(TAG, "SSID = " + SSID + "## Password = " + password + "## Type = " + type);    
  11.             
  12.         WifiConfiguration config = new WifiConfiguration();    
  13.         config.allowedAuthAlgorithms.clear();    
  14.         config.allowedGroupCiphers.clear();    
  15.         config.allowedKeyManagement.clear();    
  16.         config.allowedPairwiseCiphers.clear();    
  17.         config.allowedProtocols.clear();    
  18.         config.SSID = """ + SSID + """;    
  19.     
  20.         //增加热点时候 如果已经存在SSID 则将SSID先删除以防止重复SSID出现  
  21.         WifiConfiguration tempConfig = wifiAdmin.IsExsits(SSID);    
  22.         if (tempConfig != null) {    
  23.         settingWifiAdmin.wifiManager.removeNetwork(tempConfig.networkId);     
  24.         }    
  25.             
  26.         // 分为三种情况:没有密码   用wep加密  用wpa加密    
  27.         if (type == SECURITY_NONE) {   // WIFICIPHER_NOPASS    
  28.             config.wepKeys[0] = "";    
  29.             config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);    
  30.             config.wepTxKeyIndex = 0;     
  31.                 
  32.         } else if (type == SECURITY_WEP) {  //  WIFICIPHER_WEP     
  33.             config.hiddenSSID = true;    
  34.             config.wepKeys[0] = """ + password + """;    
  35.             config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);    
  36.             config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);    
  37.             config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);    
  38.             config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);    
  39.             config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);    
  40.             config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);    
  41.             config.wepTxKeyIndex = 0;    
  42.   
  43.         } else if (type == SECURITY_PSK) {   // WIFICIPHER_WPA    
  44.             config.preSharedKey = """ + password + """;    
  45.             config.hiddenSSID = true;    
  46.             config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);    
  47.             config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);    
  48.             config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);    
  49.             config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);     
  50.             config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);    
  51.             config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);    
  52.             config.status = WifiConfiguration.Status.ENABLED;    
  53.         }              
  54.         return config;    
  55.     }        



解决办法:

  if(Type == WifiCipherType.WIFICIPHER_NOPASS)<br style="margin: 0px; padding: 0px; list-style: none;" />      {<br style="margin: 0px; padding: 0px; list-style: none;" />      config.hiddenSSID = true;  <br style="margin: 0px; padding: 0px; list-style: none;" />//        config.wepKeys[0] = "";<br style="margin: 0px; padding: 0px; list-style: none;" />        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);<br style="margin: 0px; padding: 0px; list-style: none;" />//        config.wepTxKeyIndex = 0;<br style="margin: 0px; padding: 0px; list-style: none;" />      }

把与wep有关的都注释掉就行了


3.改别人的preferenceActivity 例子时出错,见下面的错误信息:

08-04 14:37:51.287: E/AndroidRuntime(16580): FATAL EXCEPTION: main
08-04 14:37:51.287: E/AndroidRuntime(16580): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.preferenceact/com.example.preferenceact.MusicPreferenceActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.preferenceact.MainActivity$Prefs2Fragment: make sure class name exists, is public, and has an empty constructor that is public
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.ActivityThread.access$600(ActivityThread.java:140)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.os.Handler.dispatchMessage(Handler.java:99)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.os.Looper.loop(Looper.java:137)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.ActivityThread.main(ActivityThread.java:4914)
08-04 14:37:51.287: E/AndroidRuntime(16580): at java.lang.reflect.Method.invokeNative(Native Method)
08-04 14:37:51.287: E/AndroidRuntime(16580): at java.lang.reflect.Method.invoke(Method.java:511)
08-04 14:37:51.287: E/AndroidRuntime(16580): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
08-04 14:37:51.287: E/AndroidRuntime(16580): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
08-04 14:37:51.287: E/AndroidRuntime(16580): at dalvik.system.NativeStart.main(Native Method)
08-04 14:37:51.287: E/AndroidRuntime(16580): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.preferenceact.MainActivity$Prefs2Fragment: make sure class name exists, is public, and has an empty constructor that is public
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.Fragment.instantiate(Fragment.java:588)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.preference.PreferenceActivity.switchToHeaderInner(PreferenceActivity.java:1174)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.preference.PreferenceActivity.switchToHeader(PreferenceActivity.java:1190)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.preference.PreferenceActivity.onCreate(PreferenceActivity.java:580)
08-04 14:37:51.287: E/AndroidRuntime(16580): at com.example.preferenceact.MusicPreferenceActivity.onCreate(MusicPreferenceActivity.java:18)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.Activity.performCreate(Activity.java:5086)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
08-04 14:37:51.287: E/AndroidRuntime(16580): ... 11 more
08-04 14:37:51.287: E/AndroidRuntime(16580): Caused by: java.lang.ClassNotFoundException: com.example.preferenceact.MainActivity$Prefs2Fragment
08-04 14:37:51.287: E/AndroidRuntime(16580): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
08-04 14:37:51.287: E/AndroidRuntime(16580): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
08-04 14:37:51.287: E/AndroidRuntime(16580): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
08-04 14:37:51.287: E/AndroidRuntime(16580): at android.app.Fragment.instantiate(Fragment.java:574)
08-04 14:37:51.287: E/AndroidRuntime(16580): ... 18 more

结果:原来是红色部分没有改对。。委屈。。要改成自己的activity名字,够……

<?xml version="1.0" encoding="utf-8"?>
<preference-headers 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 指定启动指定PreferenceFragment的列表项 -->
<header android:fragment=
   "cn.com.eager.music.PreferenceActivityTest$Prefs1Fragment"
android:icon="@drawable/ic_settings_applications"
android:title="Player设置"
android:summary="设置Player的相关选项" />
</preference-headers>

4.Android Lib Project与Android Project中R文件的区别

Android Lib Project中生产的R文件内,都不是常量。

Android Project中生产的R文件内,都是常量

否则会报错:

As of ADT 14, resource fields cannot be used as switch cases. Invoke this fix to get more informat

所以当你的项目中有用到switch的地方,同时条件又用到了 R 中的常量时,将此project转成lib project的话就会报错。要求你将 switch-case 换成 if-else。


5. 突然遇到eclipse的更年期到了。。。。委屈大哭,死活不动,,重启无效。。。



神奇的千度,查找一下解法,发现强行关闭进程,然后把.android\ddms.cfg 删除,就神奇复活了。老太婆一下子就回到18岁美少女。大笑



Android sdk content loader 0%的解决方案(转)


  • Eclipse在启动时,经常会碰到半天启动不起来的情况,罪魁祸首就是“Android sdk content loader 0%”,题主经常是受这玩意的百般折磨,大早上一来就被这扫了工作的激情,浪费了大把时间。Eclipse初始化不成功就干不了活,所以这事必须得解决。经过自己多次亲身测试,发现没有一种办法的百试百灵的,只有通过以下几种方案来一步一步地解决。

方法/步骤

  1. 方法一(关闭后重启):

        遇到Eclipse右下角一直显示“Android sdk content loader 0%”的情况时,直接关掉Eclipse,有ADB进程在运行时通过进程管理器结束进程,然后重启Eclipse。通过这种方法多数情况下问题会得到解决。

  2. 2

    方法二(关闭后,拔网线再重启):

        如果用最省事的方法一不能解决问题时,拔掉网线后再重启Eclipse看看。有时候也能够得到解决。

  3. 3

    方法三(删掉.android):

        关闭Eclipse,删掉C:\Users\用户名\.android文件夹下的所有内容,再重启Eclipse。

  4. 4

    方法四(删掉Work Space下的.metadata\.plugins\org.eclipse.core.resources\.projects):

        关闭Eclipse,删掉Eclipse WorkSpace下.metadata\.plugins\org.eclipse.core.resources\.projects文件夹下的所有内容,再重启Eclipse。



6. 本来想把get 回来的资料解析一下。。刚好用了换行符号"\t"作为split的字符。。。结果悲剧了,,换行符号好像失踪了一样。查了一天,才发现自己使用了readline(),这个方法会把"\n",……此处省略一万字。。。把这个重新添加进去,就可以了。。Oh yeah!!!


<strong>HttpEntity entity = httpResponse.getEntity();if (entity != null){// 读取服务器响应BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));String line = null;StringBuffer strBuf=new StringBuffer();while ((line = br.readLine()) != null) {strBuf.append(line);</strong><span style="background-color: rgb(255, 0, 0);"><strong>strBuf.append("\n");</strong></span><strong>}line=strBuf.toString();return line;}</strong>

7.用wifi连接AP的时候,发现有时候出现错误导致APP崩溃退出 。错误信息如下:

08-29 14:50:16.969: W/System.err(27733): java.util.concurrent.ExecutionException: org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.168.1 refused

后来打印调试信息,发现连接上AP,并不代表网络就能够使用了。必须等待正确获取到IP才可以。

后来加上检查IP,就是可以正常了。整个DHCP的过程有时候用了4秒。


0 0
原创粉丝点击