Mam TextView z tekstem "Hello World!" zdefiniowane w układzie xmlZachowanie dziwne: Typ klasy obiektu dodany przez metodę getText() zmian TextView po utworzeniu AccessibilityNodeInfo z TextView
TextView textView = (TextView)findViewById(R.id.textView);
metoda TextView za getText() zwraca obiekt klasy java.lang.String
//Returns object of String class
Toast.makeText(getApplicationContext(), textView.getText().getClass().getName(), Toast.LENGTH_LONG).show();
Jeśli ta sama nazywa po utworzeniu AccessibilityNodeInfo, zwraca obiekt android.text.SpannableString
//Creating AccessibilityNodeInfo
AccessibilityNodeInfo info = textView.createAccessibilityNodeInfo();
//Returns object of SpannableString
Toast.makeText(getApplicationContext(), "After creating AccessibilityNodeInfo: " + textView.getText().getClass().getName(), Toast.LENGTH_LONG).show();
W jaki sposób tworzony jest AccessibilityNodeInfo w odniesieniu do obiektu zwróconego przez metodę getText()?
Uwaga:Dzieje się tak tylko w Android 4.3 i wyżej
Ważniejsze pytanie brzmi: dlaczego Cię to obchodzi? 'getText()' określa, że zwraca 'CharSequence' ... nic więcej, nic mniej. Rzeczywistym typem zwrotów może być dowolna implementacja 'CharSequence', a ty nigdy nie powinieneś liczyć na to, że jest to coś innego. –
Cóż, nie mogę tutaj opisać pełnych wymagań. Mogę tylko wspomnieć, że mam do czynienia z innym kodem dewelopera i tworzenie AccessiblityNodeInfo łamie ich kod. I jestem tylko ciekawy wiedzieć, w jaki sposób jest zwracany typ metody getText() istotne dla AccessiblityNodeInfo węzła? –
Czuję się dla ciebie. 90% mojej pracy to radzenie sobie z ultra-podekscytowanym kodem stron trzecich, zamiast wykonywać jakąkolwiek prawdziwą pracę własną. Najlepszą praktyką jest * nie * dokumentowanie odpowiedzi na pytania, które zadajesz, więc ... powodzenia. Być może będziesz musiał zanurkować w kodzie Androida, a nawet jeśli znajdziesz odpowiedź, możesz nie być w stanie nic z tym zrobić. –