2014-03-06 35 views
0

我在活動中有一個標籤,當我點擊按鈕打開標籤視圖時,它工作正常。現在,在字段中輸入數據後,當我點擊按鈕來保存它,它給了我錯誤。可能是我在sqlite數據庫構造函數中有錯誤,但不確定。有人請幫助: 這是我的代碼爲一個選項卡:當試圖保存按鈕上的sqlite數據時發生java.lang.ClassCastException錯誤點擊

package com.example.doctormanager;

import android.app.Activity; 
import android.content.ContentValues; 
import android.content.Context; 
import android.content.Intent; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ListView; 

public class General extends Activity { 
    Context context; 
    private Button proceed; 
    private EditText patient_name,mobile,address,email,dob,age; 
    ListView template_list; 
    Intent data_intent; 
    String name=""; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.patient_general); 
      data_intent=getIntent(); 
      name=data_intent.getStringExtra("name"); 

      patient_name=(EditText)findViewById(R.id.txt17); 
      patient_name.setText(""+name); 
      mobile=(EditText)findViewById(R.id.txt23); 
      address=(EditText)findViewById(R.id.txt21); 
      email=(EditText)findViewById(R.id.txt19); 
      dob=(EditText)findViewById(R.id.txt25); 
      age=(EditText)findViewById(R.id.txt27); 
      ImageButton save= (ImageButton)findViewById(R.id.ib13); 

      save.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 


        SqlHandler db = new SqlHandler(this); 
      String p_name = patient_name.getText().toString(); 
      String p_mobile = mobile.getText().toString(); 
      String p_addr = address.getText().toString(); 
      String p_email = email.getText().toString(); 
      String p_dob = dob.getText().toString(); 
      String p_age = age.getText().toString(); 


      /** 
      * CRUD Operations 
      * */ 
      // Inserting Contacts 
      Log.d("Insert: ", "Inserting .."); 
      db.addContact(new Patient_entery(0, p_name, p_mobile, p_addr, p_email, p_dob, p_age, null)); 
       } 
      }); 

} 



} 

,這是數據庫:

package com.example.doctormanager; 

    import java.util.ArrayList; 
    import java.util.List; 

    import android.content.ContentValues; 
    import android.content.Context; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteDatabase.CursorFactory; 
    import android.database.sqlite.SQLiteOpenHelper; 
    import android.view.View.OnClickListener; 

    public class SqlHandler extends SQLiteOpenHelper { 

     public SqlHandler(Context context, String name, CursorFactory factory, 
       int version) { 
      super(context, name, factory, version); 
      // TODO Auto-generated constructor stub 
     } 


     // All Static variables 
     // Database Version 
     private static final int DATABASE_VERSION = 1; 

     // Database Name 
     private static final String DATABASE_NAME = "doctormanager"; 

     // Contacts table name 
     private static final String TABLE_PATIENT_GENERAL= "general"; 

     // Contacts Table Columns names 
     private static final String KEY_ID = "id"; 
     private static final String KEY_PATIENT_NAME = "patient_name"; 
     private static final String KEY_EMAIL = "patient_email"; 
     private static final String KEY_PATIENT_ADDR = "patient_addr"; 

     private static final String KEY_PATIENT_CONTACT_NUMBER = "patient_contact_number"; 
     private static final String KEY_PATIENT_DOB = "patient_dob"; 
     private static final String KEY_PATIENT_AGE = "patient_age"; 
     private static final String KEY_PATIENT_SEX = "patient_sex"; 

     public SqlHandler (OnClickListener onClickListener) { 
      super((Context) onClickListener, DATABASE_NAME, null, DATABASE_VERSION); 
      } 


    // public SqlHandler(OnClickListener onClickListener) { 
    //  // TODO Auto-generated constructor stub 
    // } 

     // Creating Tables 
     @Override 
     public void onCreate(SQLiteDatabase db) { 
      String CREATE_PATIENT_TABLE = "CREATE TABLE " + TABLE_PATIENT_GENERAL + "(" 
        + KEY_ID + " INTEGER PRIMARY KEY," + KEY_PATIENT_NAME + " TEXT," 
        + KEY_PATIENT_CONTACT_NUMBER + " TEXT," + KEY_EMAIL +"TEXT," + KEY_PATIENT_ADDR + "TEXT," 
        + KEY_PATIENT_DOB + "TEXT," + KEY_PATIENT_AGE + "TEXT," + KEY_PATIENT_SEX + "TEXT " + ")"; 
      db.execSQL(CREATE_PATIENT_TABLE); 
     } 

     // Upgrading database 
     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // Drop older table if existed 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_PATIENT_GENERAL); 

      // Create tables again 
      onCreate(db); 
     } 

     /** 
     * All CRUD(Create, Read, Update, Delete) Operations 
     */ 

     // Adding new contact 
     void addContact(Patient_entery patient) { 
      SQLiteDatabase db = this.getWritableDatabase(); 

      ContentValues values = new ContentValues(); 
      values.put(KEY_PATIENT_NAME, patient.getName()); // Contact Name 
      values.put(KEY_PATIENT_CONTACT_NUMBER, patient.getPhoneNumber()); // Contact Phone 
      values.put(KEY_EMAIL, patient.getPatientEmail()); // Contact Name 
      values.put(KEY_PATIENT_ADDR, patient.getAddress()); // Contact Phone 

      values.put(KEY_PATIENT_DOB, patient.getDob()); // Contact Name 
      values.put(KEY_PATIENT_AGE, patient.getAge()); // Contact Phone 

      values.put(KEY_PATIENT_SEX, patient.getSex()); // Contact Name 



      // Inserting Row 
      db.insert(TABLE_PATIENT_GENERAL, null, values); 
      db.close(); // Closing database connection 
     } 

     // Getting single contact 
     Patient_entery getPatient(int id) { 
      SQLiteDatabase db = this.getReadableDatabase(); 

      Cursor cursor = db.query(TABLE_PATIENT_GENERAL, new String[] { KEY_ID, 
        KEY_PATIENT_NAME, KEY_PATIENT_CONTACT_NUMBER, KEY_EMAIL, KEY_PATIENT_ADDR, KEY_PATIENT_DOB, KEY_PATIENT_AGE, KEY_PATIENT_SEX }, KEY_ID + "=?", 
        new String[] { String.valueOf(id) }, null, null, null, null); 
      if (cursor != null) 
       cursor.moveToFirst(); 

      Patient_entery patient = new Patient_entery(Integer.parseInt(cursor.getString(0)), 
        cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7)); 
      // return contact 
      return patient; 
     } 
public String getAllStringValues() { 
     ArrayList<String> yourStringValues = new ArrayList<String>(); 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor result = db.query(true, TABLE_PATIENT_GENERAL, 
       new String[] { KEY_PATIENT_NAME }, null, null, null, null, 
       null, null); 

     if (result.moveToFirst()) { 
      do { 
       yourStringValues.add(result.getString(result 
         .getColumnIndex(KEY_PATIENT_NAME))); 
      } while (result.moveToNext()); 
     } else { 
      return null; 
     } 
     return KEY_PATIENT_NAME; 
    } 

}

,這是XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 

    android:background="@drawable/login_back"> 



    <LinearLayout 
     android:layout_height="30dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal" 
     > 

    <TextView 
     android:id="@+id/txt16" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Name: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 

    <EditText 
     android:id="@+id/txt17" 
     android:layout_width="200dp" 
     android:layout_height="20dp" 
     android:background="@drawable/edit_text_lines" 
     android:ems="10" 
     android:textSize="10dip" /> 

</LinearLayout> 
    <LinearLayout 
     android:layout_height="40dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/txt18" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Email: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 
    <EditText 
     android:id="@+id/txt19" 
     android:layout_width="200dp" 
     android:layout_height="20dp" 
     android:text="" 
     android:textSize="10dip" 

    android:background="@drawable/edit_text_lines" 
     /> 
</LinearLayout> 


    <LinearLayout 
     android:layout_height="40dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/txt20" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Address: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 
    <EditText 
     android:id="@+id/txt21" 
    android:layout_width="200dp" 
     android:layout_height="20dp" 
     android:text="" 
     android:textSize="10dip" 

    android:background="@drawable/edit_text_lines" /> 
</LinearLayout> 
<LinearLayout 
     android:layout_height="40dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/txt22" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Phone No.: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 
    <EditText 
     android:id="@+id/txt23" 
     android:layout_width="200dp" 
     android:layout_height="20dp" 
     android:text="" 
     android:textSize="10dip" 

    android:background="@drawable/edit_text_lines"/> 
</LinearLayout> 
<LinearLayout 
     android:layout_height="40dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/txt24" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="DOB: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 
    <EditText 
     android:id="@+id/txt25" 
     android:layout_width="200dp" 
     android:layout_height="20dp" 
     android:text="" 
     android:textSize="10dip" 

    android:background="@drawable/edit_text_lines"/> 
</LinearLayout> 
<LinearLayout 
     android:layout_height="40dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/txt26" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Age: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 
    <EditText 
     android:id="@+id/txt27" 
     android:layout_width="200dp" 
     android:layout_height="20dp" 
     android:text="" 
     android:textSize="10dip" 

    android:background="@drawable/edit_text_lines"/> 
</LinearLayout> 
<LinearLayout 
     android:layout_height="40dip" 
     android:layout_width="wrap_content" 
     android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/stxt27" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Sex: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 
    <RadioGroup 
     android:id="@+id/radioSex" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:textColor="#FFFFFF" > 

     <RadioButton 
      android:id="@+id/radioMale" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Male" 
      android:textColor="#FFFFFF"/> 

     <RadioButton 
      android:id="@+id/radioFemale" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Female" 
      android:textColor="#FFFFFF" /> 
     </RadioGroup> 

     </LinearLayout> 


    <TextView 
     android:id="@+id/txt28" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Patient/Family History: " 
     android:textSize="20dip" 
     android:textColor="#FFFFFF"/> 

    <EditText 
     android:id="@+id/edttxt27" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="" 
    android:textColor="#FFFFFF" /> 
    <ImageButton 
    android:id="@+id/ib14" 
    android:src="@drawable/template" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingRight="1dip" 


    /> 

<ImageButton 
    android:id="@+id/ib13" 
    android:src="@drawable/next_visit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 

    android:layout_gravity="center_horizontal" 
    /> 

</LinearLayout> 

在此先感謝。

+0

試試這個'SqlHandler DB =新SqlHandler(youractivity .this);'in' onclick()' –

+1

Taro問題解決泰國gayo? – Piyush

回答

2

您需要在SqlHandler通過Activity context像:

SqlHandler db = new SqlHandler(youractivity.this); 

Buttononclick()

而且還Remove OnClickListener onClickListener()SqlHanlder Constructer像:

public SqlHandler (Context con) { 
    super(con, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
+0

我認爲這有幫助,但我需要檢查天氣的數據是否已保存到數據庫或不。那麼我會投票答覆。謝謝您的幫助。 –

+0

數據正在保存在數據庫中。現在可以請你幫助我怎樣才能在其他活動中以列表的形式顯示名稱列,當我點擊列表時,我獲得了該特定名稱的信息,然後長按一下dat將從數據庫中刪除entery 。謝謝 –

+0

@AditiGujrati首先你需要創建一個'Activity',這個佈局包含'Listview'.now,你可以從'DB'獲取所有'Names'並將它存儲到一個'ArrayList'中,然後創建'ArrayAdapter'並綁定你的'ArrayList '然後綁定'ArrayAdapter'到你的'ListView'.now,在最後一步實現'Listview'' longClickListner'並從'ArrayList'獲得特定的'Names' –

相關問題