2011-01-25 7 views
0

他の質問やウェブサイトが多数確認されていて、探しているものが実際に見つかりませんでした。私は練習のための連絡先リストを作っています...私がやっていることは、連絡先の情報を更新する機能をユーザに与えることです。連絡先をクリックすると、フィールドは既に入力されているように記入し、ヒントで空白にしないでください。問題は現在、フィールドにデータが入力されていないこと、他のすべては正常に機能しますが、作成時にユーザーが入力したテキストの代わりにすべてのフィールドにヒントがあることです。SQLiteデータベースからの情報取得:すでに入力されているフィールドを入力してローを更新する

ContacList.classのコード... AddEditContact.class

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.initLayout(); 
     mDbAdapter = new TagDBAdapter(this); 
     mDbAdapter.open(); 
     Bundle extras = getIntent().getExtras(); 
     mRowId = extras.getLong(TagDBAdapter.KEY_ROWID); 
     if(mRowId != null) { 
      mContact = mDbAdapter.fetchContact(mRowId); 
      m_firstNameEditE.setText(mContact.getFirstName()); 
      m_lastNameEditE.setText(mContact.getLastName()); 
      m_phoneNumberEdit.setText(mContact.getPhoneNumber()); 
      m_emailEditE.setText(mContact.getEmail()); 
      m_homePhoneEditE.setText(mContact.getHomePhone()); 
      m_workPhoneEditE.setText(mContact.getWorkPhone()); 
     } 
    } 

取得接点コードここ

ため

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     mDbAdapter = new TagDBAdapter(this); 
     mDbAdapter.open(); 
     Cursor cursor = mCursor; 
     cursor.moveToPosition(position); 
     Intent intent = new Intent(this, AddEditContact.class); 
     intent.putExtra(TagDBAdapter.KEY_ROWID, id); 
     startActivityForResult(intent, ACTIVITY_EDIT); 
    } 

コードfetchContactのためのコードは(されています。ここでは、コードです)

public Contact fetchContact(long rowId) throws SQLException { 
     Contact contact = new Contact(); 
     Cursor mCursor = 
      mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_FIRSTNAME, KEY_LASTNAME, KEY_NAME, KEY_NUMBER, 
        KEY_EMAIL, KEY_HOMEPHONE, KEY_WORKPHONE}, KEY_ROWID + "=" + rowId, null, null, null, null, null); 
     if(mCursor != null) { 
      mCursor.moveToFirst(); 
     } 
     while(mCursor.moveToNext()) { 
      contact.setFirstName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_FIRSTNAME))); 
      contact.setLastName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_LASTNAME))); 
      contact.setName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_NAME))); 
      contact.setPhoneNumber(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_NUMBER))); 
      contact.setEmail(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_EMAIL))); 
      contact.setHomePhone(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_HOMEPHONE))); 
      contact.setWorkPhone(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_WORKPHONE))); 
     } 
     return contact; 
    } 

私はインテントからエクストラを取得し、KEY_ROWIDを取得しています。ヌルでない場合は、fetchContact(long rowId)クラスから取得した連絡先オブジェクトのgetterにEditTextsのテキストを設定します。 Contactオブジェクト次に、すべてのEditTextをそれぞれのゲッターに設定します。しかし、実際には、私が言ったように、ちょうどそこにヒントがあるだけで、すべてのフィールドが空白になります。

ここに何か不足していますか?どうもありがとう。

1つの潜在的な問題は、このアクティビティの結果を求める2つのインテントがあることです.1つはACTIVITY_CREATE、もう1つはACTIVITY_EDITです。多分それは間違った意図を得る。

答えて

0

デバッグを試したことがありますか、または少なくともLog.d()を値に出力するようにしましたか?

あなたのmDbAdapterはあなたによって書かれていますか? fetchContact()に問題がある可能性がありますか?

+0

ここにfetchContact()のコードがあります。 ここには当てはまらないので、元の質問テキストに入れてください。 – JMRboosties

+0

私は問題が最初の結果を照会する前に* mCursor.moveToNext()*を呼び出していると思います。ループを* while(mCursor.moveToNext()){} *から* do {} while(mCursor.moveToNext())*に変更します。 –

+0

授業中に、私が戻ったときにこれを試してみます。ありがとう! – JMRboosties

関連する問題