2、如何打开从别处复制过来的项目?用导入方式 File->Import->General->Existing Project into WorkSpace->(选中你的项目就行了)
3、Obsolete proguard file; use -keepclasseswithmembers解决方法:
- 打开 lint warnings view (Window > Show View > Other > android > Lint Warnings) 然后修改 proguard.cfg
- 把有错行的 "keepclasseswithmembernames" 改为 "keepclasseswithmembers"
- 重编绎 (点Lint Warnings view里的refresh灯泡左边的按钮)
- 如果还报错,就接着改其它行。
timeto=formatdatetime(Cdate(now()),2)&" "&Hour(Now)&":"&Minute(Now)&":"&Second(Now) 5、LIST数据问题:
String temp = "[{\"aa\":\"1\",\"bb\":\"2\"},{\"aa\":\"3\",\"bb\":\"4\"},{\"aa\":\"5\",\"bb\":\"6\"}]";
List<Map<String, Object>> lm = Test.getList(temp);
for(int i=0;i<lm.size();i++){
System.out.println(lm.get(i).get("aa"));
System.out.println(lm.get(i).get("bb"));
}
6、空间居中
通过设置 android:gravity="center" 来让 EditText 中的文字在 EditText 组件中居中显示;同时我们设置 EditText 的 android:layout_gravity="right" 来让 EditText 组件在 LinearLayout 中居中显
7、让控件在一行
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
if (name != null && !name.equals("")) {
//do something
}
或者
if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。
//do something
}
9、Failed to install *.apk on device 'emulator-5554': timeout
-
错误提示:
Failed to install helloworld.apk on device 'emulator-5554': timeout
或者
the user data image is used
原因:
由于模拟器已经开启而没有关闭或者非法关闭引起的。
解决方法:
删除 C:\Documents and Settings\Administrator\.android\avd\对应版本.avd
下所有以.lock结尾的文件夹。
或者
Failed to install *.apk on device *:
timeout Launch canceled!
还有一种办法:
在window->preferences->Android->DDMS->ADB connection time out (ms):
将这个值设置的大一些,默认为5000,我设置成500000,然后就OK了。我有一次试N种方法都解决不了,后来就是用这个办法解决的。
10、使用MapAbc地图Api时,提示:Canvas: trying to use a recycled bitmap android.graphics.BitmapIntent intent=new Intent();//新Active intent.setClass(CarNearby.this, SearchCarNearby.class); Bundle bundle=new Bundle();//active间传值 bundle.putInt("Lat", pointx.getLatitudeE6()); bundle.putInt("Lng", pointx.getLongitudeE6()); // bundle.putInt("FatherActivity", 2); intent.putExtras(bundle); startActivity(intent); // CarNearby.this.finish();//注意:此处若是finish,将会导致下一个使用地图的Activity程序出现错误: //Canvas: trying to use a recycled bitmap android.graphics.Bitmap}11、从A切换到B的过程中出现黑屏可以在Manifest文件中改变B的theme,在theme里添加<item name="android:windowIsTranslucent">true</item>,这样从A到B的过程中,因为B是透明的,所以背景就是A。这样的用户体验比较好。 <activity android:name=".ShakeSearchCarNearby"> <item name="android:windowIsTranslucent">true</item> </activity>
12、在调程序时总是出现异常关闭的现象,log显示:E/AndroidRuntime(398):Caused by: java.lang.ClassCastException: android.widget.ImageButton折腾了我一下午,后来发现是同一个控件在XML中和JAVA文件中类型不一致导致的。无语死,亏我还一行一行的在JAVA文件里找错误呢。导致问题原因:XML中:[html] view plaincopy<ImageButton android:id="@+id/left" android:layout_height="30.0dip" android:layout_width="30.0dip" android:layout_centerVertical="true" android:layout_toRightOf="@+id/clock" android:layout_marginLeft="40dp" android:src="@drawable/btn_scroll_left" /> JAVA文件中:[java] view plaincopyprivate Button button_left; button_left = (Button)findViewById(R.id.left); 解决方法:把两个控件类型改成一致的就可以了:private ImageButton button_left;
13、URL提交数据含有汉字等符号,需要URLEncoder.encode,否则会出错。
在客户端把中文字符用URLEncoder.encode()进行转码,在服务器端用URLDecoder.decode()进行解码,这样就能正常的提取中文字符了 java.net.URLEncoder.encode("鲁LT1111")
14、Sqlite查询结果按照相关度排序如果不按时间排序,只按
标题中同时出现"数据库"和"Sql" >> 内容中同时出现"数据库"和"Sql" >> 标题中出现"数据库"或"Sql" >>内容中出现"数据库"或"Sql"
排序可以用:
Select Title,Content from Article where
Title like '%数据库%' and Title like '%Sql%'
union all
Select Title,Content from Article where
not (Title like '%数据库%' and Title like '%Sql%')
and Content like '%数据库%' and Content like '%Sql%'
union all
Select Title,Content from Article where
not (Title like '%数据库%' and Title like '%Sql%')
and not (Content like '%数据库%' and Content like '%Sql%')
and (Title like '%数据库%' or Title like '%Sql%')
union all
Select Title,Content from Article where
Title not like '%数据库%' and Title not like '%Sql%'
and not (Content like '%数据库%' and Content like '%Sql%')
and (Content like '%数据库%' or Content like '%Sql%')15、动态创建按钮数组:要通过Button bt = new Button (this);新建再传递Button[] btnguanjianci = new Button[gjc.length];
for(int ii=0;ii<gjc.length;ii++) {final String gjci=gjc[ii]; Button bt = new Button (this); bt.setText(gjc[ii]); bt.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT , ViewGroup.LayoutParams.WRAP_CONTENT)); bt.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Toast.makeText(getApplicationContext(), gjci, Toast.LENGTH_SHORT).show(); } }); btnguanjianci[ii]=bt; Layoutguanjianci.addView(btnguanjianci[ii]); }
16:E/Database(2122): sqlite3_open_v2("/data/data/com.awz.gpsRec/databases/gps2012821.db", &handle, 6, NULL) failed:打开数据库的权限不够,将数据库设置为所有权限777
17 BAIDU MAP API:10-16 04:20:07.355: E/AndroidRuntime(450): Caused by: android.view.InflateException: Binary XML file line #74: Error inflating class com.baidu.mapapi.MapView
1、改为:public class Plc_Click extends MapActivity;
17.2::10-16 04:46:33.650: E/AndroidRuntime(537): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.awz.taxi/com.awz.taxi.Plc_Click}: java.lang.ClassCastException: android.app.Application
在AndroidManifest.xml里面application标签里少了句android:name=".BMapApiDemoApp" <application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".BMapApp" android:debuggable="true">18.在“”分享按钮里加上自己的程序,并通过程序读取传来的数据:比如传一个经纬度,处理这个事情的是SendActivity:图:http://www.eoeandroid.com/data/attachment/forum/201212/11/151641v88gf83ccfj8i03f.jpg
<activity
android:name=".SendActivity">
<intent-filter>
<action android:name="android.intent.action.SEND"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<data android:mimeType="text/plain"></data>
</intent-filter>
</activity>
然后在SendActivity。class添加:
@Override
protected void onStart() {
super.onStart();
Intent txtIntent=getIntent();
String Lat,Lng; //39.452246,110.541718
String LL = txtIntent.getStringExtra(Intent.EXTRA_TEXT);
if (LL == null)
LL = "";
try {
if(!("".equals(LL))){
String[] LLL = LL.split(",");
Lat=LLL[0];
Lng=LLL[1];
Log.i("Lat/Lng",Lat+"/"+Lng);
med.setText(LL);
mTextView.setText(LL);
Toast.makeText(getApplicationContext(), "二维码方式获取经纬度:"+LL, 1);
}
} catch (Exception e) {
Log.i("118-login","二维码方式获取经纬度失败");
Toast.makeText(getApplicationContext(), "二维码方式获取经纬度失败"+e.getMessage(), 1);
}
// mTextView.setText(txt);
}
19、引用jar中资源文件的修改:用winrar打开并修改相关图片,比如图标(可改为透明的,不能删除)再压缩回去就行。
20、报错:java.lang.NoClassDefFoundError: com.baidu.mapapi.BMapManager
解决方案:
一、右击项目->properties->Java Build Path->Order and Export,在需要引用的包前面打勾。
二、Project->Clean...
问题解决,文章转自于PC珠江路??http://www.pczjl.com/pczjl/blog/forum.php?mod=viewthread&tid=1418 ;
21\很多人出现了java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{*****Activity}: java.lang.ClassNotFoundException: Didn't find class "*****Activity" on path: /data/app/*******.apk的错误,在android开发中,我也遇到了这个问题,纠结了两天,终于解决了,结合我自己加上网上的找到的,现提供给大家。
1。Manifest文件中注册的Activity的名称,有没有写错,包名有没有搞错,有些网友,可能只写一个类名,前面用点号代替,但是这个类不在默认的包内,所以报这个错,那么只要写上类的全名,即可。
2。有些android,需要一些第三方的包,直接将其引入,在以前是可以的,但是在最新的adt中不行,必须在程序中新建一个libs文件夹,将第三方的jar文件copy到libs文件夹中,才行,很多人因为这样才报错,特别是以前的项目,默认并没有这个libs文件夹,但是新版本的adt,默认就建了libs这个文件夹。
3。有一点也很重要,在Java Build Path面板下的Order and Export中,一定要把你引入的jar文件,勾上,否则,跟没引用一样,切记。
一般也就是以前的原因了,如果大家有看不明白的,或者有什么其他原因的,请跟我留言,共同分享,共同进步!
22\android.os.NetworkOnMainThreadException异常如何解决在做android开发 大家也会经常莫名其妙遇到各种问题,今天遇到这个问题也很奇怪,项目一直采用的是android sdk2.2开发
上一个app没有出现如题的问题,但这个版本却出现了,后来在网上看有说添加代码
- <span style="font-size:18px;"> 详见StrictMode文档
- StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
- .detectDiskReads()
- .detectDiskWrites()
- .detectNetwork() // or .detectAll() for all detectable problems
- .penaltyLog()
- .build());
- StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
- .detectLeakedSqlLiteObjects()
- .detectLeakedClosableObjects()
- .penaltyLog()
- .penaltyDeath()
- .build());</span>
这样也可以解决问题,但sdk就不能采用2.2了
还有种解决办法就是在AndroidManifest.xml 里面进行配置
最近之所以出现这样问题是我在里面这样写的
[html] view plaincopy- <span style="font-size:18px;"> <uses-sdk
- android:minSdkVersion="3"
- android:targetSdkVersion="14" /></span>
后来改为
[html] view plaincopy- <span style="font-size:18px;"> <uses-sdk
- android:minSdkVersion="3"
- android:targetSdkVersion="8" /></span>
这样就可以了! baidu地图相关 1、运行程序出现如下错误:
05-02 17:09:31.019: D/BMapApiEngine_v1_3_0(3703): BMapApiEngine_v1_3_0 library not found!
05-02 17:09:31.019: D/BMapApiEngine_v1_3_0(3703): Couldn't load BMapApiEngine_v1_3_0 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.surfing.conference-
解决过程:
1、下载了一个BMapApiEngine_v1_3_0放在libs/armeabi文件夹下,在运行程序,报同样的错误;
解决办法:
1、在工程目录下新建一个jars文件夹,把libs文件夹下的所有jar包,拷贝到jars目录下;
2、在工程属性中,移除的jar文件,重新加入jars文件下的jar文件;
运行工程,问题解决。 Android在初始化时弹出popwindow的方法Android中在onCreate()时弹出popwindow,很多人都有过类似的需求吧,但是直接在onCreate()中调用popwindow的showAtLocation()方法是会报异常的,原因是此时activity还没有初始化完毕,网上也有一些解决方法,但一般都是通过延时一小段时间再弹出实现的,代码不够健壮。其实可以通过不断的检测当前activity的状态,一旦初始化完毕立即调用popwindow的showAtLocation()方法显示。详细代码如下:
/************************************************************************ * * 该类用来在初始化的时候弹出一个popwindow,用到的而已文件如下,特别要注意的是其中的 * android:minHeight="1dp" 和android:minWidth="1dp"属性。初始化时弹出popwindow的关键是 * 要等待整个activity初始化完毕后再调用showAtLocation()方法,否则会出异常。 * 实现方式就是不停的检测acitvity是否初始化完毕,一旦完毕就调用 * showAtLocation() 方法显示popwindow。 * * 以下为布局文件: *<?xml version="1.0" encoding="utf-8"?> *<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" * android:id="@+id/main" * android:layout_width="fill_parent" * android:layout_height="fill_parent" * android:minHeight="1dp" * android:minWidth="1dp" * android:orientation="vertical" > *</LinearLayout> * * 作者:石兴 * 完成时间:2012/3/10 * 版本 :1.0 * ************************************************************************/
package cn.sd.sx.initpopw;
import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.view.Gravity;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.LinearLayout;import android.widget.PopupWindow;import android.widget.TextView;import cn.sd.sx.popw.R;
public class PopWActivity extends Activity {private PopupWindow mPopupWindow;private Handler mHandler;// 检测时间间隔private int detchTime = 5; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mHandler = new Handler(); // 显示popWindow showPopWindow(); }
private void showPopWindow() { LinearLayout view = new LinearLayout(this); LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); TextView txt1 = new TextView(this); txt1.setLayoutParams(params); txt1.setGravity(Gravity.CENTER); txt1.setText("txt1"); txt1.setBackgroundColor(Color.RED); view.addView(txt1); mPopupWindow = new PopupWindow(view, 300,300); mPopupWindow.setOutsideTouchable(true); /*****************以下代码用来循环检测activity是否初始化完毕***************/ Runnable showPopWindowRunnable = new Runnable() {@Overridepublic void run() {// 得到activity中的根元素View view = findViewById(R.id.main);// 如何根元素的width和height大于0说明activity已经初始化完毕if( view != null && view.getWidth() > 0 && view.getHeight() > 0) {// 显示popwindow mPopupWindow.showAtLocation(PopWActivity.this.findViewById(R.id.main), Gravity.CENTER, 0, 0); // 停止检测mHandler.removeCallbacks(this);} else {// 如果activity没有初始化完毕则等待5毫秒再次检测mHandler.postDelayed(this, detchTime);}}};// 开始检测mHandler.post(showPopWindowRunnable); /******************以上代码用来循环检测activity是否初始化完毕*************/ }}
Android如何将Activity以Dialog的形式显示 :
1、AndroidManifest.xml 文件中,申明 activity 的主题使用自定义对话框样式。
<activity android:name=".SensorGetValueActivity"
android:label="@string/activity_custom_dialog"
android:theme="@style/Theme.CustomDialog">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
2、res/values/styles.xml 样式文件中定义一个对话框主题样式,这里继承了 android:style/Theme.Dialog 主题,
并且窗口样式 android:windowBackground 引用了 @drawable/filled_box
<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog"><item name="android:windowBackground">@drawable/filled_box</item>
</style>
3、res/drawable/filled_box.xml 定义了 Shape 类型的 drawable(抽象的可画区域),最终是通过这个来实现新对话框的样式。
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#f0600000"/>
<stroke android:width="3dp" color="#ffff8080"/>
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>