当前位置: 代码迷 >> Android >> 自写的安卓程序在手机上卸载后再调试就报错打不开了咋回事
  详细解决方案

自写的安卓程序在手机上卸载后再调试就报错打不开了咋回事

热度:13   发布时间:2016-04-28 04:31:19.0
自写的安卓程序在手机上卸载后再调试就报错打不开了怎么回事
之前运行的挺好的。然后有一个sqlite数据库里面数据一直存在我就想着卸载软件再调试会怎么样。
然后我就把软件卸载了。结果再用ECLIPSE调试连第一个界面都打不开了。之前运行的好好地。
代码如下:
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.user);
     add=(Button)findViewById(R.id.add);
     go=(Button)findViewById(R.id.go);
     add.setOnClickListener(this);
     go.setOnClickListener(this);
     db=Mysqlitehelper.createDatabase(this);//获取数据库对象
ipList.clear();
cursor=db.rawQuery("select distinct name from name order by _id DESC", null);//查询表中某一列的数据
while(cursor.moveToNext()){
ipList.add(cursor.getString(0));//获取第一列的值,逐一将数据库中的IP地址增加到列表中
}
db.close();
cursor.close();
adapt=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,ipList);
setListAdapter(adapt);
    }
    @Override
    public void onClick(View v) {
     switch (v.getId()) {
     case R.id.go:
     Intent intent=new Intent();
     intent.setClass(this, HOME.class);
     startActivity(intent);
     break;
     case R.id.add:
     Intent intent3=new Intent();
     intent3.setClass(this, USEREDIT.class);
     startActivity(intent3);
     break;
     default:
     break;
     }
    }
特别简单就是一个listview储存用户编写过的用户名(储存在另一个界面上)然后两个按钮进行跳转。
结果一运行就发现直接结束程序,调试的地方一堆报错。但是没有指出是程序的哪一行。
at android.widget.ArrayAdapter.createViewFromResource
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.view.View.measure(View.java:16736)
at android.widget.LinearLayout.onMeasure
E/AndroidRuntime(1764):  at android.view.View.measure(View.java:16736)
E/AndroidRuntime(1764):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5178) 
E/AndroidRuntime(1764):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
E/AndroidRuntime(1764):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2392)
E/AndroidRuntime(1764):  at android.view.View.measure(View.java:16736)
E/AndroidRuntime(1764):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2103)
E/AndroidRuntime(1764):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
E/AndroidRuntime(1764):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1402)
E/AndroidRuntime(1764):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1103)
E/AndroidRuntime(1764):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6018)
E/AndroidRuntime(1764):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:799)
E/AndroidRuntime(1764):  at android.view.Choreographer.doCallbacks(Choreographer.java:599) 
E/AndroidRuntime(1764):  at android.view.Choreographer.doFrame(Choreographer.java:559)
E/AndroidRuntime(1764):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:784)
E/AndroidRuntime(1764):  at android.os.Handler.handleCallback(Handler.java:733)
E/AndroidRuntime(1764):  at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(1764):  at android.os.Looper.loop(Looper.java:157)
E/AndroidRuntime(1764):  at android.app.ActivityThread.main(ActivityThread.java:5872)
E/AndroidRuntime(1764):  at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1764):  at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1764):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
E/AndroidRuntime(1764):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
E/AndroidRuntime(1764):  at dalvik.system.NativeStart.main(Native Method)
只有类似这些看不懂的东西……
然后刚才我卸载了软件再次调试,第一个界面又能打开了。但是跳转到下一个界面在sqlite数据库中添加一行数据后跳转回第一个界面就又报了上述同样的错误!
求问问题出在哪里了?

------解决方案--------------------
你把软件 卸载了 数据库就没了, 你再 onCreate()方法里面 操作数据库, 数据库创建的时候, 里面有值吗 , 是不是因为数据库原因崩了

把数据库里面的值都打印一遍看看
------解决方案--------------------
引用:
又在调试过程中发现一点问题,补充一下:
上述程序中,在数据库中插入数据时,因为新建的表有四列:
CREATE TABLE IF NOT EXISTS name(_id integer primary key, name text, age text, male text)
所以在写入数据时,如果写入name,age,male三项都写的话,再回到第一个界面就会报错。如果只写入name的话就不会报错
这是为什么……

是不是你的数据库表已经存在了,就并没有执行创建了,而你想要操作的字段也不存,导致的问题。
  相关解决方案