我怎样才能把更新的电话号码输入到我拿起我的Andr​​oid应用领域? [英] How can I put the updated phone number into the field I picked for my Android app?

查看:233
本文介绍了我怎样才能把更新的电话号码输入到我拿起我的Andr​​oid应用领域?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎样才能把更新的电话号码输入到我挑的领域?我有选择器返回的电话号码,但在错误的领域。

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.

这篇关于我怎样才能把更新的电话号码输入到我拿起我的Andr​​oid应用领域?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆