如何将更新后的 phone 号码放入我为 Android 应用程序选择的字段中?
How can I put the updated phone number into the field I picked for my Android app?
如何将更新后的 phone 号码放入我选择的字段中?我让选择器返回 phone 号码,但在错误的字段中。
选择联系人后,phone 号码被放置在错误的字段中。
负责此联系人选择器逻辑的片段在我的存储库中
https://github.com/jackygrahamez/MayDay/blob/gradle2/app/src/main/java/com/mayday/md/common/ContactPickerFragment.java
我如何重构此代码以将数字放入正确的字段中?
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
NEW CLUE :我注意到请求代码 returns 不同的值取决于我选择的字段:第一个字段 requestCode 65636,第二个字段 requestCode 131172,第三个字段请求代码 196708
您当前的设置有 WizardActivity
作为父片段 activity,SetupContactsFragment
作为片段,ContactPickerFragment
作为子片段。当 ContactPickerFragment
发出 startActivityForResult(...)
调用时,onActivityResult(...)
回调在 WizardActivity
中收到。
问题:
首先,WizardActivity's
成员变量 contactPickerFragment
从未被使用过。它不属于您的 ui。因此,在 WizardActivity#onActivityResult(...)
中调用 contactPickerFragment.onActivityResult(....)
除了打印一些日志语句外什么都不做。此外,对 super.onActivityResult(...)
的调用完全丢失了。正确的方法是检查请求代码是否由 WizardActivity
发出。如果不是,则调用超级方法会将 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(...)
。在 onActivityResult(...)
中,requestCode
将指示需要更新的 EditText
。
如何将更新后的 phone 号码放入我选择的字段中?我让选择器返回 phone 号码,但在错误的字段中。
选择联系人后,phone 号码被放置在错误的字段中。
负责此联系人选择器逻辑的片段在我的存储库中 https://github.com/jackygrahamez/MayDay/blob/gradle2/app/src/main/java/com/mayday/md/common/ContactPickerFragment.java
我如何重构此代码以将数字放入正确的字段中?
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
NEW CLUE :我注意到请求代码 returns 不同的值取决于我选择的字段:第一个字段 requestCode 65636,第二个字段 requestCode 131172,第三个字段请求代码 196708
您当前的设置有 WizardActivity
作为父片段 activity,SetupContactsFragment
作为片段,ContactPickerFragment
作为子片段。当 ContactPickerFragment
发出 startActivityForResult(...)
调用时,onActivityResult(...)
回调在 WizardActivity
中收到。
问题:
首先,WizardActivity's
成员变量 contactPickerFragment
从未被使用过。它不属于您的 ui。因此,在 WizardActivity#onActivityResult(...)
中调用 contactPickerFragment.onActivityResult(....)
除了打印一些日志语句外什么都不做。此外,对 super.onActivityResult(...)
的调用完全丢失了。正确的方法是检查请求代码是否由 WizardActivity
发出。如果不是,则调用超级方法会将 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(...)
。在 onActivityResult(...)
中,requestCode
将指示需要更新的 EditText
。