Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-26061] Android : Serious Issues in Alloy TableView Containing TextField in SDK 7.1.0

GitHub Issuen/a
TypeBug
PriorityNone
StatusClosed
ResolutionCannot Reproduce
Resolution Date2018-08-02T17:28:22.000+0000
Affected Version/sRelease 7.1.0
Fix Version/sn/a
ComponentsAndroid
Labelsn/a
ReporterRiduanul Islam
AssigneeMostafizur Rahman
Created2018-05-21T18:36:27.000+0000
Updated2018-08-02T17:28:22.000+0000

Description

Test case are provided here... Environment: android, TiSDK 7.1.0, testing device: Galaxy S9. [https://github.com/jwogan5/sampleApp/blob/master/hypertest.zip] Hello, I spent multiple days trying to figure out why my table view that contains text fields was all the sudden displaying wonky (weird ) behavior. I finally found out that it started with SDK 7.1.0+ On SDK 7.0.2 the functionality of the app works as it should. Also, I built a test app in vanilla ( without alloy ) titanium and it worked fine on SDK 7.1.0+. I then built a test app with ALLOY and the weird behavior started to occur again. This is broken down into 2 parts. The first part is the weird behavior and the second part is an error that is thrown when using
Ti.UI.Android.SOFT_INPUT_ADJUST_PAN 

*1st issue ( Tableview weird behavior )*

Tap on the row labeled 'MAKE'.

It will pull up a gray selections table.

Tap on 'BBB' to select it.

You will see that it puts 'BBB' on the right side of the MAKE row. Also, the debug output of the app shows the value of the text changing.

Now click the textfield row labeled MODEL.

Type anything into the MODEL field and hit DONE on the keyboard.

NOW hit the MAKE row again to change the value.

Select DDD in the selections table.

You will see that the value on the MAKE row stays BBB even though the debug output of the app says that it has changed.

NOW scroll down to the bottom of the table and back up. Do this fast maybe twice and you will see the text value displayed on the MAKE row now switches to 'DDD' by itself.

*Another variation of the issue:*

On a fresh start of the app click on the MODEL row to change the text.

Type anything into the field and press DONE on the keyboard.

Now tap the MAKE row and the selections table will show.

Tap on 'BBB'

You will see that the text on the MAKE row stays blank although the debug output against the rows shows the value changed.

Now scroll to the bottom of the table and back up. You will see that both the MAKE and MODEL rows are now empty.

Scroll down again and back up and you will see that both the MAKE and MODEL rows are now not empty.

Now tap the CATEGORY row and pick an option from the selections table that shows.

You will see that both the CATEGORY and MODEL options row become blank.

My apps use ALLOY so it is not an option to not use Alloy. Also with the table just changing values by itself and not changing values when you choose them makes the app completely unusable. Now I can use 7.0.2 for the time being but if this issue is never fixed then when android requires us to use a higher SDK then I will have to stop being a customer of Appcelerator since I am now stuck on 7.0.2 until the issue is fixed. *2nd issue (AdjustPan Error)* When using
 $.index.windowSoftInputMode = Ti.UI.Android.SOFT_INPUT_ADJUST_PAN 
if you click into a textfield you will see the following error. THIS DOES NOT happen every time so what I do is scroll to the bottom of the table and click on the textfield such as for the row ( engine size ). Now click on the row and then hit DONE on the keyboard. If you don't see the error just repeat clicking into the row and hitting DONE on the keyboard until you do. You can always click a different row as well. The error will happen as I am able to reproduce it every time I run the app.

ViewGroup: void offsetRectBetweenParentAndChild() this=DecorView@ca991f7[TiActivity]

[INFO] ViewGroup: : descendant=ti.modules.titanium.ui.widget.TiUIEditText{a28666a VFED..CL. .F....I. 0,0-936,200 #7f0c00af app:id/titanium_ui_edittext} rect=Rect(1262, 60 - 1266,
180)
[INFO] ViewGroup: : offsetFromChildToParent=true clipToBounds=false
[INFO] ViewGroup: : ViewParent theParent = descendant.mParent; theParent=android.widget.FrameLayout{264175b V.E...... ......I. 0,0-936,200}
[INFO] ViewGroup: : ========================================
[INFO] ViewGroup: : while #0 (theParent != null)= true && (theParent instanceof View)= true && (theParent != this)= true
[INFO] ViewGroup: : >> descendant = ti.modules.titanium.ui.widget.TiUIEditText{a28666a VFED..CL. .F....I. 0,0-936,200 #7f0c00af app:id/titanium_ui_edittext}
[INFO] ViewGroup: : >> theParent = android.widget.FrameLayout{264175b V.E...... ......I. 0,0-936,200}
[INFO] ViewGroup: : while #1 (theParent != null)= true && (theParent instanceof View)= true && (theParent != this)= true
[INFO] ViewGroup: : >> descendant = android.widget.FrameLayout{264175b V.E...... ......I. 0,0-936,200}
[INFO] ViewGroup: : >> theParent = android.support.design.widget.TextInputLayout{f1ddbf8 VFED..CL. ......ID 0,0-936,200 #61c}
[INFO] ViewGroup: : while #2 (theParent != null)= true && (theParent instanceof View)= true && (theParent != this)= true
[INFO] ViewGroup: : >> descendant = android.support.design.widget.TextInputLayout{f1ddbf8 VFED..CL. ......ID 0,0-936,200 #61c}
[INFO] ViewGroup: : >> theParent = org.appcelerator.titanium.view.TiBorderWrapperView{10a927f V.ED..... ......ID 344,0-1280,200}
[INFO] ViewGroup: : while #3 (theParent != null)= true && (theParent instanceof View)= true && (theParent != this)= true
[INFO] ViewGroup: : >> descendant = org.appcelerator.titanium.view.TiBorderWrapperView{10a927f V.ED..... ......ID 344,0-1280,200}
[INFO] ViewGroup: : >> theParent = org.appcelerator.titanium.view.TiCompositeLayout{28c68d1 V.E...... ......ID 0,0-1440,200}
[INFO] ViewGroup: : while #4 (theParent != null)= true && (theParent instanceof View)= true && (theParent != this)= true
[INFO] ViewGroup: : >> descendant = org.appcelerator.titanium.view.TiCompositeLayout{28c68d1 V.E...... ......ID 0,0-1440,200}
[INFO] ViewGroup: : >> theParent = ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem{873dc69 V.E...... ......ID 0,1352-1440,1552}
[INFO] ViewGroup: : while #5 (theParent != null)= false && (theParent instanceof View)= false && (theParent != this)= true
[INFO] ViewGroup: : >> descendant = ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem{873dc69 V.E...... ......ID 0,1352-1440,1552}
[INFO] ViewGroup: : >> theParent = null
[INFO] ViewGroup: : ========================================
[INFO] ViewGroup: : #Last descendant=ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem{873dc69 V.E...... ......ID 0,1352-1440,1552}
[INFO] ViewGroup: : #Last theParent=null
[INFO] ViewGroup: : IllegalArgumentException(parameter must be a descendant of this view)
[ERROR] E/ViewRootImpl@1daf9f6[TiActivity]: offsetDescendantRectToMyCoords() error occurred. focus=ti.modules.titanium.ui.widget.TiUIEditText{a28666a VFED..CL. .F....I. 0,0-936,200 #7
f0c00af app:id/titanium_ui_edittext} mTempRect=[-1046066,60][-1046062,180] java.lang.IllegalArgumentException: parameter must be a descendant of this view
[WARN] W/System.err: java.lang.IllegalArgumentException: parameter must be a descendant of this view

Comments

  1. Hans Knöchel 2018-05-22

    [~rislam] We are looking into this in the next sprint.
  2. Riduanul Islam 2018-07-01

    Do we have any progress in this regard, So we can update to the customer ?
  3. Joshua Quick 2018-07-02

    I can't reproduce the 2 issues mentioned. I downloaded "hypertest" project and tested it with Titanium 7.0.2, 7.1.0, and 7.2.0 on the following devices: * Pixel XL (Android 8.0) * Galaxy Nexus (Android 4.1) There were no errors when using SOFT_INPUT_ADJUST_PAN. I did try scrolling to the very bottom, tapping on the bottom most TextField, hitting the virtual keyboard's DONE button, and repeating this several times. No issues. Also the row text correctly updated for me... However, there was a known issue in Titanium 7.1.0.RC (release candidate) that did have a row text update issue as can be seen in [TIMOB-25843], but this issue was correct in 7.1.0.GA (final release).

JSON Source