【发布时间】:2014-12-19 01:38:27
【问题描述】:
我开始学习 Android 编程,并且有一个这样的任务:
创建您将在其中实现这些功能的 Android 应用:
进行数据存储,以保留某些联系人的信息。 (SD 卡或数据库上的文件)。 sd 卡/数据库上的该文件应包含某些人的电话号码形式的数据。 显示您在列表视图组件中创建的文件的所有元素。 单击列表中的某些元素(联系人)应发送短信到从存储中选择的他的号码。
我编写了一些代码,主要是按照书本完成这项任务,但是当我应该使用某些设置方法设置联系人的 ID、姓名和电话号码时遇到问题。
我在 Contact.java 中使用构造函数、set 和 get 方法定义了 Contact 类:
package com.example.zadatak1;
public class Contact {
int id;
String name;
String phone;
public Contact(){
}
public Contact(int id, String name, String phone){
this.id=id;
this.name=name;
this.phone=phone;
}
public Contact(String name, String phone){
this.name=name;
this.phone=phone;
}
public int getID(){
return this.id;
}
public void setID(int id){
this.id=id;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
public String getPhone(){
return this.phone;
}
public void setPhone(String phone){
this.phone=phone;
}
}
问题出在文件末尾的 Handler.java 行中:
package com.example.zadatak1;
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.SQLiteOpenHelper;
public class Handler extends SQLiteOpenHelper {
private static final String DB_NAME = "databaseContact";
private static final String TABLE_NAME = "contacts";
private static final String ID = "id";
private static final String NAME = "name";
private static final String PHONE = "phone_number";
private static final int DATABASE_VERSION = 1;
public Handler(Context context){
super(context, DB_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS = "CREATE_TABLE " + TABLE_NAME + ID + "INTEGER PRIMARY KEY," + NAME + "TEXT," + PHONE + "TEXT" + ")";
db.execSQL(CREATE_CONTACTS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
void addContact(Contact contact){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(NAME, contact.getName());
values.put(PHONE, contact.getPhone());
db.insert(TABLE_NAME, null, values);
db.close();
}
Contact getContact(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, new String[]{ID,NAME,PHONE}, NAME, new String[]{String.valueOf(id)}, null, null, null, null);
if(cursor!=null)
cursor.moveToFirst();
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2));
return contact;
}
public List<Contact> getAllContacts(){
List<Contact> contactList = new ArrayList<Contact>();
String selectQuery = "SELECT * FROM " + TABLE_NAME+ " ORDER BY " + NAME + "ASC";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
return contactList;
}
Contact contact = new Contact ();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhone(cursor.getString(2));
}
对于“SetID”、“setName”和“setPhone”,我遇到了错误: “这条线的多个标记 - 标记上的语法错误,应为 AnnotationName 反而 - 令牌“setID”的语法错误,标识符应在之后 这个令牌 - 标记“(”的语法错误,删除此标记 - 标记的语法错误,删除这些标记"
"此行有多个标记 - 标记上的语法错误,应改为 AnnotationName - 标记“setName”的语法错误,此标记后应有标识符 - 语法错误,插入“Type VariableDeclaratorId”完成 形式参数列表"
"此行有多个标记 - 令牌“setPhone”的语法错误,此令牌后应有标识符 - 语法错误,插入“Type VariableDeclaratorId”完成 形式参数列表 - 令牌上的语法错误,应改为 AnnotationName”
有什么帮助吗? :(
【问题讨论】: