2012-02-28 93 views
0

編輯自動填寫>>寫整個活動代碼 我有我的活動一個EditText低於這個按鈕。當用戶點擊按鈕時,聯繫人選擇器意圖被激活,並且用戶可以選擇一個聯繫人。在該活動的「onActivityResult」事件,我取得聯繫的選擇的ID,並通過API我已經定義了,我讓他/她的名字,如下:的EditText獲取Android應用程序

package com.iBirthDayNotofication; 

import java.text.SimpleDateFormat; 
import java.util.Date; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

import com.iBirthdayNotification.Data.BirthdayContact; 
import com.iBirthdayNotification.Data.MyOwnContact; 

public class BirthdayEditor extends Activity { 

    EditText et_Name; 
    EditText et_Birthday; 
    Button et_Btn; 


    private Long mRowId; 

    BirthdayContact db; 

    String editor_tag; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.birthday_editor); 

     db=new BirthdayContact(this); 

     et_Name=(EditText)findViewById(R.id.editor_contactname_Input); 
     et_Birthday=(EditText)findViewById(R.id.editor_birthdday_input); 
     et_Btn=(Button)findViewById(R.id.editor_btn_add); 

     et_Name.setText("Ahmagh"); 


     mRowId = (savedInstanceState==null) ? null : 
      (Long)savedInstanceState.getSerializable("_id"); 

     //Get row id from calling activity 
     if (mRowId == null) { 

      Bundle extras = getIntent().getExtras(); 
      mRowId = extras != null ? extras.getLong("_id") 
        : null; 

     } 

     populateFields(); 

     et_Btn.setOnClickListener(new View.OnClickListener() 
     { 

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

       //Log.v("click message","hey"); 

       //Open Contact Intent to pick contact ID 
       Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
       startActivityForResult(intent,1001); 
      } 
     }); 

    } 

    void startContactActivity(Intent intent) 
    { 
     startActivityForResult(intent,101); 
    } 



    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     //super.onActivityResult(requestCode, resultCode, data); 

     if (resultCode == Activity.RESULT_OK) 
     { 
      String id = data.getData().getLastPathSegment(); 


      mRowId=Long.parseLong(id); 

      String tst=MyOwnContact.GetMyOwnContact(mRowId).GetName(); 

      et_Name.setText(tst); 


      BirthdayContact bc=db.GetBirthDay(mRowId); 


      editor_tag="insert"; 

      if(bc!=null) 
      { 

       SimpleDateFormat sp=new SimpleDateFormat("yyyy-MM-dd"); 


       et_Birthday.setText(bc.GetBirthDay().toString()); 
       editor_tag="edit"; 
      } 

     } 

    } 

    void populateFields() 
    { 
     if(mRowId!=null) 
     { 
      MyOwnContact mw=MyOwnContact.GetMyOwnContact(mRowId); 

      BirthdayContact bc=db.GetBirthDay(mRowId); 

      //populate widgtes 
      et_Name.setText(mw.GetName()); 
      et_Name.setText(bc.GetBirthDay().toString()); 


     } 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     saveState(); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     populateFields(); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     // TODO Auto-generated method stub 
     super.onSaveInstanceState(outState); 

     saveState(); 

     outState.putSerializable(("_id"), mRowId); 
    } 

    private void saveState() 
    { 
     SimpleDateFormat sp=new SimpleDateFormat("yyyy-MM-dd"); 

     Date birthDate=new Date(); 
     try 
     { 
      if(et_Birthday.getText()!=null) 
      { 
       birthDate = sp.parse(et_Birthday.getText().toString()); 
      } 
     } 
     catch(Exception exp) 
     { 
      // 
     } 


     if (editor_tag == "insert") { 
      long id = db.AddNewBirthdayContact(mRowId, birthDate); 
      if (id > 0) { 
       mRowId = id; 
      } 
     } 
     else if(editor_tag =="edit") 
     { 
      db.UpdateBirthDateContact(mRowId, birthDate); 
     } 
    } 


} 

Wheter我設置et_Name文本(「! !!!!!「)或wheter我TST設置它,那隻能說明這一點:

週三08月29日00:00:00亞洲/德黑蘭1990年

即使當我發表意見

et_Name.setText("!!!!!!"); 

顯示該日期。

注意: 我有一個表保存聯繫人的生日和他的ID,我已經定義了兩個類來處理ContactAPI和該表。

你能幫我嗎?!

編輯:

xml文檔

<EditText 
      android:id="@+id/editor_contactname_Input" 
      android:layout_weight="1" 
      android:hint="@string/editor_hint_contact" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 

      > 

編輯>>

結果:

enter image description here

+0

你從你的子活動返回Activity.RESULT_OK結果代碼? – Egor 2012-02-28 11:21:27

+0

我只是使用Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);調用聯繫人選擇器,我不知道它是否返回正常 – 2012-02-28 11:23:44

+0

您應該檢查結果代碼,setText()方法可能不會在您的代碼中執行。 – Egor 2012-02-28 11:27:13

回答

0

嘗試沒有

super.onActivityResult(requestCode, resultCode, data); 

我沒有使用聯繫人的意圖,但已經與攝像機意圖工作了很多,我沒有必要打電話給超級。

+0

它沒有工作:( – 2012-02-28 14:34:08

+0

我不確定你爲什麼這樣做。你確定你沒有設置其他地方。閱讀這篇文章,它顯示瞭如何閱讀聯繫人http:// stackoverflow。com/questions/1721279/how-to-read-contacts-on-android-2-0 – Orlymee 2012-02-28 14:52:43

+0

最簡單的方法是DeBug,看看這個值在哪裏以及如何設置。這裏是如何做到這一點的鏈接,檢查你是不是給它分配一個值http://androidacademy.com/1-tutorials/43-hands-on/76-debugging-android-with-eclipse?showall=1 – Orlymee 2012-02-28 14:55:39

0

我可以發現問題。在onresume事件中,我調用populateFields()方法時未考慮操作模式。操作模式可以是插入或編輯。而且我犯了一個錯誤,並設置了et_name兩次。

謝謝你們。

1

您不關閉EditText標記。

嘗試:

<EditText 
     android:id="@+id/editor_contactname_Input" 
     android:layout_weight="1" 
     android:hint="@string/editor_hint_contact" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 

     /> 
相關問題