【发布时间】:2012-03-17 20:44:45
【问题描述】:
已编辑 >> 编写整个活动代码 我的活动中有一个 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 设置,它都只显示:
8 月 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"
>
已编辑 >>
结果:
【问题讨论】:
-
您是否从您的子活动中返回 Activity.RESULT_OK 结果代码?
-
我只使用 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);调用联系人选择器,我不知道它是否返回正常
-
您应该检查结果代码,setText() 方法可能不会在您的代码中执行。
-
你一定是在其他地方使用了et_text。请调试它............
-
你能发布 et_Name 的 xml 以及它的 findviewbyid 吗?
标签: android