Ik werk aan een bestaande Android app waarin ik een ContactSelectorFragment heb. Hierin kan je letters typen waarmee het eronder suggesties weergeeft waarop je kan klikken om ze te selecteren. Gezien ik het nu mogelijk wil maken om een email adres in te geven dat nog niet in de contact lijst staat, wil ik keypresses vangen en kijken of de ingevoegde string een email adres is/lijkt. Om dit voor elkaar te krijgen moet ik dus eerst de String die wordt getypd kunnen "vangen".
Ik heb dus de onderstaande methodes gevonden waarin ik denk dat ik het eea moet aanpassen. Om te kijken of setupEventHandlers() wel de methode is die wordt aangeroepen, heb ik er een aantal Log-berichten ingezet:
Wanneer ik dit scherm open, print LogCat wel het bericht "setupEventHandlers", maar wanneer ik letters intyp, print het geen van de andere berichten (zoals de "Another letter inserted", "From within the SWITCH" of de ""KEYS: " + value".
Ik heb nu echt geen flauw idee hoe ik verder moet.
Heeft iemand enig idee hoe ik de ingevoerde karakters/string kan verkrijgen?
Gezien ik hier met mijn handen in mijn haar zit, zijn alle tips meer dan welkom!
Ik heb dus de onderstaande methodes gevonden waarin ik denk dat ik het eea moet aanpassen. Om te kijken of setupEventHandlers() wel de methode is die wordt aangeroepen, heb ik er een aantal Log-berichten ingezet:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); autoCompleteField = (AutoCompleteTextView) getView().findViewById(R.id.edit_contact); ContactsAutoSuggestAdapter autoSuggestAdapter = new ContactsAutoSuggestAdapter(getActivity()); autoCompleteField.setAdapter(autoSuggestAdapter); this.resultList = (LinearLayout) getView().findViewById(R.id.contact_list); this.selectedAdapter = new ContactsAdapter(getActivity(), this); setupEventHandlers(); } public void setupEventHandlers() { Log.e(this, "setupEventHandlers"); autoCompleteField.setOnItemClickListener(this); autoCompleteField.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { Log.e(this, "Another letter inserted"); switch (keyEvent.getKeyCode()) { case KeyEvent.KEYCODE_ENTER: Log.e(this, "From within the SWITCH"); String value = ((TextView) view).getText().toString(); Log.e(this, "KEYS: " + value); if(!TextUtils.isEmpty(value)) { Log.e(this, "IS NOT EMPTY: " + value); Contact contact = new Contact(); contact.setValue(value); contact.setType(IdentityType.fromPattern(value)); addContact(contact); } return true; } return false; } }); selectedAdapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { Log.e(this, "onChanged"); super.onChanged(); fillContactList(); } }); } |
Wanneer ik dit scherm open, print LogCat wel het bericht "setupEventHandlers", maar wanneer ik letters intyp, print het geen van de andere berichten (zoals de "Another letter inserted", "From within the SWITCH" of de ""KEYS: " + value".
Ik heb nu echt geen flauw idee hoe ik verder moet.
Gezien ik hier met mijn handen in mijn haar zit, zijn alle tips meer dan welkom!