我怎样才能把更新的电话号码输入到我拿起我的Android应用领域? [英] How can I put the updated phone number into the field I picked for my Android app?
问题描述
我怎样才能把更新的电话号码输入到我挑的领域?我有选择器返回的电话号码,但在错误的领域。
How can I put the updated phone number into the field I picked? I have the picker returning the phone number but in the wrong field.
选择一个联系人的电话号码被放置在错误的时间字段。
After picking a contact the phone number is placed in the wrong field.
负责该联系人选择逻辑我的片段是在我的回购
<一href=\"https://github.com/jackygrahamez/MayDay/blob/gradle2/app/src/main/java/com/mayday/md/common/ContactPickerFragment.java\" rel=\"nofollow\">https://github.com/jackygrahamez/MayDay/blob/gradle2/app/src/main/java/com/mayday/md/common/ContactPickerFragment.java
My fragment responsible for this contact picker logic is in my repo https://github.com/jackygrahamez/MayDay/blob/gradle2/app/src/main/java/com/mayday/md/common/ContactPickerFragment.java
会如何重构这个code摆在正确的字段中的数字?
How might I refactor this code to put the number in the correct field?
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
新的线索:我注意到,请求code返回视场我选择不同的价值:第1场的请求code 65636,第二场要求code 131172,第3场的请求code 196708
NEW CLUE : I notice that the request code returns different values depending on the field I pick: 1st field requestCode 65636, 2nd field requestCode 131172, 3rd field requestCode 196708
推荐答案
您当前的设置有 WizardActivity
作为父活动, SetupContactsFragment
作为一个片段,而 ContactPickerFragment
作为子片段。当 ContactPickerFragment
发出 startActivityForResult(...)
调用的onActivityResult(...)
回调在 WizardActivity
收。
Your current setup has WizardActivity
as the parent activity, SetupContactsFragment
as a fragment, and ContactPickerFragment
as a child-fragment. When ContactPickerFragment
issues a startActivityForResult(...)
call, onActivityResult(...)
callback is received in WizardActivity
.
问题:
首先, WizardActivity的
成员变量 contactPickerFragment
是从未使用过。这是不是你的用户界面的一部分。因此,呼吁 contactPickerFragment.onActivityResult(....)
在 WizardActivity#的onActivityResult(...)
不做任何其他比打印一些日志语句。此外,调用 super.onActivityResult(...)
全部丢失。正确的方法是检查是否请求code是由 WizardActivity
发出。如果不是,调用父类方法将路由的onActivityResult(..)
调用片段 SetupContactsFragment
。
First off, WizardActivity's
member variable contactPickerFragment
is never used. It isn't part of your ui. So, calling contactPickerFragment.onActivityResult(....)
inside WizardActivity#onActivityResult(...)
does nothing other than print a few log statements. Additionally, the call to super.onActivityResult(...)
is missing altogether. The correct way would be to check if the request code was issued by WizardActivity
. If it wasn't, calling the super method will route the onActivityResult(..)
call to the fragment 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(...)
来正确的子片段。这样做的一种方式是不同的请求code
分配给每个儿童的片段。在 SetupContactsFragment#的onActivityResult(...)
,我们遍历所有子片段和发出呼叫的的onActivityResult(...)
方法。既然我们已经分配一个不同的请求code
来的每个片段,只有这些调用之一将被处理。
SetupContactsFragment
can now receive the onActivityResult(...)
callback. Still, we need to identify and dispatch onActivityResult(...)
to the correct child-fragment. One way of doing this is to assign a different requestCode
to each of the child-fragments. Inside SetupContactsFragment#onActivityResult(...)
, we iterate over all child-fragments and issue a call to their onActivityResult(...)
method. Since we have assigned a different requestCode
to each fragment, only one of these calls will be processed.
不过,我不明白为什么你需要三个相同的子片段,各持一个输入字段和放大器;一个按钮。这些小部件都可以 SetupContactsFragemets
UI的一部分。即使规格从3个触点在将来更改为10,你可以实现的膨胀和多次增加每行的方法。
However, I don't see why you need three identical child fragments, each holding an input field & a button. These widgets can all be part of SetupContactsFragemets'
ui. Even if the specifications change from 3 contacts to 10 in the future, you could implement a method that inflates and adds each row multiple times.
在这种情况下,您将需要3个独特的请求codeS
。在此基础上的ImageButton
是pressed,不同的请求code用于<$ C $
C> startActivityForResult(...)。在的onActivityResult(...)
的请求code
将显示哪些的EditText
需要进行更新。
In this case, you will need 3 unique requestCodes
. Based on which ImageButton
is pressed, a different requestCode
is used for startActivityForResult(...)
. Inside onActivityResult(...)
, the requestCode
will indicate which EditText
needs to be updated.
这篇关于我怎样才能把更新的电话号码输入到我拿起我的Android应用领域?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!