2012-08-08 23 views
1

我是新来的android编程。我已经在单独的java类中创建了一个数据库,并且我有一个活动,我想要一些数据,特别是从EditText存储到按钮单击时的数据库。我在代码中做了什么错误?在将数据库代码包含在OnClick事件中后,它不会启动我的savecount活动。如何在Button单击事件中将EditText数据添加到数据库?

当SaveClass活动启动时,它冻结了应用程序,eclipse显示以下消息:“未找到源”,并带有编辑源查找路径的选项。

在递归以下,直到推出

logcat的表演得到超时:

08-08 18:06:37.313: D/dalvikvm(1676): threadid=1: still suspended after undo (sc=1 dc=1) 
08-08 18:06:37.323: I/dalvikvm(1676): Wrote stack traces to '/data/anr/traces.txt' 
08-08 18:06:37.793: I/Process(896): Sending signal. PID: 1676 SIG: 3 
08-08 18:06:37.793: I/dalvikvm(1676): threadid=3: reacting to signal 3 
08-08 18:06:37.823: D/dalvikvm(1676): threadid=1: still suspended after undo (sc=1 dc=1) 
08-08 18:06:37.823: I/dalvikvm(1676): Wrote stack traces to '/data/anr/traces.txt' 
08-08 18:06:38.042: W/ActivityManager(896): Launch timeout has expired, giving up wake lock! 
08-08 18:06:38.175: W/ActivityManager(896): Activity idle timeout for ActivityRecord{b4bf2e18 com.simple.tally.counter/.SaveCount} 

classdbOpenHelper

package com.simple.tally.counter; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 


public class classdbOpenHelper extends SQLiteOpenHelper { 

    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_COUNTED = "countedno"; 
    public static final String KEY_DESC = "countdesc"; 
    public static final String KEY_DATE = "countdate"; 

    public static final String DATABASE_NAME= "countdb"; 
    public static final String DATABASE_TABLE = "countable"; 
    public static final int DATABASE_VERSION = 1; 


    public classdbOpenHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE TABLE" + DATABASE_TABLE + " (" + 
     KEY_ROWID + " INTEGET PRIMARY KEY AUTOINCREMENT " + 
     KEY_COUNTED + " INTEGER " + 
     KEY_DESC + " TEXT NOT NULL " + 
     KEY_DATE + " TEXT NOT NULL);" 
       ); 
    } 


    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXITS " + DATABASE_TABLE); 
     onCreate(db); 

    } 

} 

SaveCount.java

import android.os.Bundle; 
import android.app.Activity; 
import android.content.ContentValues; 
import android.database.sqlite.SQLiteDatabase; 
import android.content.Intent; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.view.View; 

public class SaveCount extends Activity { 
TextView metersave; 
classdbOpenHelper eventsData; 
EditText desc; 
Button Save; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_save_count);   
     Intent launchNewIntent = getIntent(); 
     String count = launchNewIntent.getStringExtra(SimpleTallyCounter.EXTRA_MESSAGE); 
     metersave = (TextView) findViewById(R.id.metersave); 
     metersave.setText(count); 
     final Button Save = (Button) findViewById(R.id.Save); 
     Save.setOnClickListener(new clicker()); 
     eventsData = new classdbOpenHelper(this); 
     desc = (EditText) findViewById(R.id.desc); 
    } 

    @Override 
    public void onDestroy() { 
     eventsData.close(); 
    } 

    class clicker implements Button.OnClickListener { 
     public void onClick(View v) { 
      String descvalue = desc.getText().toString(); 
      uSQLiteDatabase db = eventsData.getWritableDatabase(); 
      ContentValues cv = new ContentValues(); 
      cv.put(classdbOpenHelper.KEY_COUNTED, metersave.getText().toString()); 
      cv.put(classdbOpenHelper.KEY_DESC, descvalue); 
      cv.put(classdbOpenHelper.KEY_DATE, System.currentTimeMillis()); 
      db.insert(classdbOpenHelper.DATABASE_TABLE, null, cv); 
     } 
    } 


} 
+2

按下按钮会发生什么? logcat说什么?应用程序崩溃了吗?空白数据是否插入到表中?更多信息对我们有帮助。 – RyanInBinary 2012-08-08 12:48:47

+0

你在哪里打开或关闭数据库?看到这个例子的所有操作instert,删除或更新http://blog.sptechnolab.com/2011/03/02/mysql/android-sqlite-insert-update-delete-and-display-data/ – 2012-08-08 12:57:23

+0

该喀哒声类是有点奇怪。 (通常情况下)您可以让您的SaveCount类实现onClickListener,然后在onClick方法中,测试v.getId()== R.id.Save,然后将该数据库保存代码放在那里。 – leenephi 2012-08-08 12:58:24

回答

0

这样createComment使用这个你存储值数据的基础上

ed1 = (EditText) findViewById(R.id.ed1); 
    ed2 = (EditText) findViewById(R.id.ed2); 
    ed3 = (EditText) findViewById(R.id.ed3); 


    String str1 = ed1.getText().toString(); 
    String str2 = ed2.getText().toString(); 
    String str3 = ed3.getText().toString(); 
// stord data base values in database    
comment = datasource.createComment(str1, str2 ,str3); 

ANR retreve数据库中其他活动

AccountDataSource data = new AccountDataSource(getActivity()); 
    data.open(); 
    Accounts_list = data.getAllAccounts(); 

getAllAccounts这个喜欢看http://www.vogella.com/articles/AndroidSQLite/article.html它是用满。

相关问题