edittext在android应用程序中自动填充

时间:2012-02-28 11:17:55

标签: android

已编辑>>编写整个活动代码 我的活动中有一个EditText,下面有一个按钮。当用户点击按钮时,联系人选择器意图被激活,用户可以选择一个联系人。在' onActivityResult'该活动的事件,我得到所选择的联系人ID,并通过我定义的API,我得到他/她的名字,如下所示:

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);
        }
    }


}

我设置et_Name文本(" !!!!!!")或者我用tst设置它,它只显示:

Wed Aug 29 00:00:00 Asia / Tehran 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"

            >

已编辑&gt;&gt;

结果:

enter image description here

3 个答案:

答案 0 :(得分:1)

您没有关闭de 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"

        />

答案 1 :(得分:0)

不用

尝试
super.onActivityResult(requestCode, resultCode, data);

我没有使用过联系意图,但是我已经使用了相机意图,而且我没有打过电话。

答案 2 :(得分:0)

我可以找到问题。在onresume事件中,我调用populateFields()方法而不考虑操作模式。操作模式可以是插入或编辑。而且我犯了一个错误并将et_name设置了两次。

谢谢你们。