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
- public static boolean Connect(String SSID, String Password, int Type) {
- WifiConfiguration wifiConfig = createWifiInfo(SSID, Password, Type);
- if (wifiConfig == null) {
- Log.v(TAG,"wifiConfig == null");
- return false;
- }
- int netID = settingWifiAdmin.wifiManager.addNetwork(wifiConfig);
- Log.v(TAG,"netID = "+netID);//连不加密AP总是返回-1
- boolean bRet = settingWifiAdmin.wifiManager.enableNetwork(netID, true);
- return bRet;
- }
- /***
- * 配置要连接的WIFI热点信息
- * @param SSID
- * @param password
- * @param type 加密类型
- * @return
- */
- public static WifiConfiguration createWifiInfo(String SSID, String password, int type) {
- Log.e(TAG, "SSID = " + SSID + "## Password = " + password + "## Type = " + type);
- WifiConfiguration config = new WifiConfiguration();
- config.allowedAuthAlgorithms.clear();
- config.allowedGroupCiphers.clear();
- config.allowedKeyManagement.clear();
- config.allowedPairwiseCiphers.clear();
- config.allowedProtocols.clear();
- config.SSID = """ + SSID + """;
- //增加热点时候 如果已经存在SSID 则将SSID先删除以防止重复SSID出现
- WifiConfiguration tempConfig = wifiAdmin.IsExsits(SSID);
- if (tempConfig != null) {
- settingWifiAdmin.wifiManager.removeNetwork(tempConfig.networkId);
- }
- // 分为三种情况:没有密码 用wep加密 用wpa加密
- if (type == SECURITY_NONE) { // WIFICIPHER_NOPASS
- config.wepKeys[0] = "";
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- } else if (type == SECURITY_WEP) { // WIFICIPHER_WEP
- config.hiddenSSID = true;
- config.wepKeys[0] = """ + password + """;
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- } else if (type == SECURITY_PSK) { // WIFICIPHER_WPA
- config.preSharedKey = """ + password + """;
- config.hiddenSSID = true;
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
- config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
- config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
- config.status = WifiConfiguration.Status.ENABLED;
- }
- return config;
- }
解决办法:
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初始化不成功就干不了活,所以这事必须得解决。经过自己多次亲身测试,发现没有一种办法的百试百灵的,只有通过以下几种方案来一步一步地解决。
方法/步骤
-
方法一(关闭后重启):
遇到Eclipse右下角一直显示“Android sdk content loader 0%”的情况时,直接关掉Eclipse,有ADB进程在运行时通过进程管理器结束进程,然后重启Eclipse。通过这种方法多数情况下问题会得到解决。
-
方法二(关闭后,拔网线再重启):
如果用最省事的方法一不能解决问题时,拔掉网线后再重启Eclipse看看。有时候也能够得到解决。
-
方法三(删掉.android):
关闭Eclipse,删掉C:\Users\用户名\.android文件夹下的所有内容,再重启Eclipse。
-
方法四(删掉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秒。