android开发问题集锦

android开发问题集锦
1、Unable to resolve target 'android-15': 在Ecplise工作空间导入书上Android会出现错误,大部分是SDK 版本不符,如下错误提示:Error:Unable to resolve target android-15解决办法:修改工程目录下的default.properties和project.properties文件里的内容target=android-5改成target=android-10(2.3为10或者其他版本)就可以了

2、如何打开从别处复制过来的项目?
用导入方式 File->Import->General->Existing Project into WorkSpace->(选中你的项目就行了)

解决方法:
  • 打开 lint warnings view (Window > Show View > Other > android > Lint Warnings) 然后修改 proguard.cfg
  • 把有错行的 "keepclasseswithmembernames" 改为 "keepclasseswithmembers"
  • 重编绎  (点Lint Warnings view里的refresh灯泡左边的按钮)
  • 如果还报错,就接着改其它行。
4、asp获取标准的昨天今天时间:
timefrom=formatdatetime(Cdate(now())-1,2)&" "&Hour(Now)&":"&Minute(Now)&":"&Second(Now)

 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" >

8、String 是否为空的判断
正确的写法应该先加上name != null的条件,如例:
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.Bitmap
Intent 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 plaincopy
private 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没有出现如题的问题,但这个版本却出现了,后来在网上看有说添加代码


[java]   view plain copy
  1. <span style="font-size:18px;">           详见StrictMode文档  
  2.             StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
  3.                     .detectDiskReads()  
  4.                     .detectDiskWrites()  
  5.                     .detectNetwork()   // or .detectAll() for all detectable problems  
  6.                     .penaltyLog()  
  7.                     .build());  
  8.             StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  
  9.                     .detectLeakedSqlLiteObjects()  
  10.                     .detectLeakedClosableObjects()  
  11.                     .penaltyLog()  
  12.                     .penaltyDeath()  
  13.                     .build());</span>  

这样也可以解决问题,但sdk就不能采用2.2了

还有种解决办法就是在AndroidManifest.xml 里面进行配置

最近之所以出现这样问题是我在里面这样写的

[html]   view plain copy
  1. <span style="font-size:18px;">   <uses-sdk  
  2.         android:minSdkVersion="3"  
  3.         android:targetSdkVersion="14" /></span>  
出现了问题

后来改为

[html]   view plain copy
  1. <span style="font-size:18px;">   <uses-sdk  
  2.         android:minSdkVersion="3"  
  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() {
@Override
public 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> 
 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值