如何将更新后的电话号码放入我为Android应用程序选择的字段中?

如何将更新后的电话号码放入我为Android应用程序选择的字段中?,android,android-fragments,android-contacts,android-fragmentactivity,Android,Android Fragments,Android Contacts,Android Fragmentactivity,如何将更新后的电话号码输入我选择的字段?我让选取者返回电话号码,但在错误的字段中 选择联系人后,电话号码会被放在错误的字段中 我负责这个联系人选择器逻辑的片段在我的repo中 如何重构此代码以将数字放入正确的字段 02-23 12:47:59.217 12360-12360/com.mayday.md E/WizardActivity﹕ onUserInteraction 02-23 12:47:59.347 12360-12360/com.mayday.md E/WizardActi

如何将更新后的电话号码输入我选择的字段?我让选取者返回电话号码,但在错误的字段中

选择联系人后,电话号码会被放在错误的字段中

我负责这个联系人选择器逻辑的片段在我的repo中

如何重构此代码以将数字放入正确的字段

02-23 12:47:59.217  12360-12360/com.mayday.md E/WizardActivity﹕ onUserInteraction
02-23 12:47:59.347  12360-12360/com.mayday.md E/WizardActivity﹕ onUserInteraction
02-23 12:47:59.347  12360-12360/com.mayday.md E/WizardActivity.onPause﹕ page = setup-contacts
02-23 12:47:59.347  12360-12360/com.mayday.md E/>>>>>>﹕ assert flagRiseFromPause = true
02-23 12:47:59.387  12360-12360/com.mayday.md D/AbsListView﹕ unregisterIRListener() is called
02-23 12:48:00.657  12360-12360/com.mayday.md D/WizardActivity.onStop﹕ page = setup-contacts
02-23 12:48:00.657  12360-12360/com.mayday.md D/AbsListView﹕ onVisibilityChanged() is called, visibility : 4
02-23 12:48:00.657  12360-12360/com.mayday.md D/AbsListView﹕ unregisterIRListener() is called
02-23 12:48:02.107  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult requestCode 65636
02-23 12:48:02.107  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult resultCode -1
02-23 12:48:02.107  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult data Intent { dat=content://com.android.contacts/data/2369 flg=0x1 }
02-23 12:48:02.117  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult id 2369
02-23 12:48:02.117  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult name XXX XXXX
02-23 12:48:02.147  12360-12360/com.mayday.md D/dalvikvm﹕ GC_FOR_ALLOC freed 598K, 22% free 29241K/37368K, paused 15ms, total 15ms
02-23 12:48:02.147  12360-12360/com.mayday.md E/WizardActivity﹕ onActivityResult pCur android.content.ContentResolver$CursorWrapperInner@4313d048
02-23 12:48:02.147  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult phone xxxxxxxxxx
02-23 12:48:02.147  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult phone xxxxxxxxxx
02-23 12:48:02.147  12360-12360/com.mayday.md E/ContactPickerFragment﹕ onActivityResult phoneNumberEditText android.widget.EditText{42c580b0 VFED..CL ........ 0,0-944,156 #7f0b0016 app:id/contact_edit_text}
02-23 12:48:02.147  12360-12360/com.mayday.md E/??????﹕ text changed
02-23 12:48:02.147  12360-12360/com.mayday.md D/WizardActivity.onStart﹕ page = setup-contacts
02-23 12:48:02.147  12360-12360/com.mayday.md E/WizardActivity.onResume﹕ pageId = setup-contacts and flagRiseFromPause = true
02-23 12:48:02.147  12360-12360/com.mayday.md E/WizardActivity.onResume﹕ back button pressed
02-23 12:48:02.147  12360-12360/com.mayday.md D/AbsListView﹕ onVisibilityChanged() is called, visibility : 0
02-23 12:48:02.147  12360-12360/com.mayday.md D/AbsListView﹕ unregisterIRListener() is called
02-23 12:48:02.167  12360-12360/com.mayday.md D/AbsListView﹕ unregisterIRListener() is called

新线索:我注意到请求代码根据我选择的字段返回不同的值:第一个字段请求代码65636,第二个字段请求代码131172,第三个字段请求代码196708

当前设置将
向导活动
作为父活动,将
设置联系人片段
作为片段,和
ContactPickerFragment
作为子片段。当
ContactPickerFragment
发出
startActivityForResult(…)
调用时,
onActivityResult(…)
WizardActivity
中接收回调

问题:

首先,
WizardActivity的
成员变量
contactPickerFragment
从不使用。它不是用户界面的一部分。因此,在
WizardActivity#onActivityResult(…)
内部调用
contactPickerFragment.onActivityResult(…)
除了打印一些日志语句外,什么都不做。此外,对
super.onActivityResult(…)
的调用完全丢失。正确的方法是检查请求代码是否由
WizardActivity
发出。如果不是,调用super方法将把
onActivityResult(..)
调用路由到片段
SetupContactsFragment

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // currently, WizardActivity does not deal with 
    // any onActivityResult callbacks
    super.onActivityResult(requestCode, resultCode, data);
}
SetupContactsFragment
现在可以接收
onActivityResult(…)
回调。尽管如此,我们仍然需要识别并分派
onActivityResult(…)
到正确的子片段。一种方法是为每个子片段分配不同的
requestCode
。在
SetupContactsFragment#onActivityResult(…)
中,我们迭代所有子片段,并调用它们的
onActivityResult(…)
方法。由于我们为每个片段分配了不同的
requestCode
,因此只会处理其中一个调用

然而,我不明白为什么需要三个相同的子片段,每个子片段包含一个输入字段和一个按钮。这些小部件都可以是
SetupContactsFragemets'
ui的一部分。即使将来规格从3个触点更改为10个,您也可以实现一种方法,对每行进行多次充气和添加


在这种情况下,您需要3个唯一的
requestCodes
。根据按下的
ImageButton
,不同的
requestCode
用于
startActivityForResult(…)
。在ActivityResult(…)中,
requestCode
将指示需要更新的
EditText

所提供的屏幕截图使用的java类是什么?您提供的片段链接布局中只有2个元素。这些方法位于提供的类中
ContactPickerFragment
phonenumberditext
似乎适用于所有三个电话号码字段。我可以通过提供phonenumberditext.setText('xxxxxxxxx'),在创建
onCreateView
时将它们全部设置好。您可以看到日志输出确实与ActivityResult phoneNumberEditText第118行上的此类相关。此外,我注意到请求代码根据我选择的字段返回不同的值:第一个字段请求代码65636,第二个字段请求代码131172,第三个字段请求代码196708
fragment\u type\u interactive\u contacts.xml
列出了联系人字段的三个片段。也许我可以定义一个静态EditView并根据返回的请求代码引用它们?是的,我从这里的两个注释者那里得到了一个修复。我在等他们中的任何一个来申请赏金。你们能帮我解决以下问题吗。我一直在努力尝试这一点,我看到你的这篇文章是有关嵌套片段。我将不胜感激。以下是帖子:-