Apps-android-commons: After tapping "+", new language caption+description pair difficult to access

Created on 21 Mar 2020  路  26Comments  路  Source: commons-app/apps-android-commons

When the "+" button is tapped, a new language (caption+description fields couple) is added at the bottom, but somehow it does not seem to always appear immediately, especially from the third language pair, I have to tap around a bit before being able to see it, not sure why.
Screenshot_20200316-231105_Commons

bug good first issue structured-data

All 26 comments

Can I work on this issue?

@chao19991005 Have you managed to reproduce the issue? Please send a screenshot showing these fields in several languages, thanks :-)

@nicolas-raoul Sorry, I found that there is no such bug appears in my device

It happens after I have added several languages. Besides I found it impossible to delete the languages I don't want, there's only an "+" button.
Screenshot_20200321-202514

Oh and after adding another several blank languages, I directly suspended my phone, and when I turned it back on, the app crashed and asked me to send error messages...

@chao19991005 @AntSYau Oh sorry I did not realize the Structured Data branch had not been merged yet.
Would you mind temporarily switching to this branch? https://github.com/commons-app/apps-android-commons/commits/structured-data Thanks!

sure i'll see what i can do

the "+" button now don't work at all true it took ages @nicolas-raoul
The new language won't appear before I sleep&awake my phone.
I pasted some error messages in debug console in below see updated log

I/SessionManager: dispatchVolumeKeyEvent:fr.free.nrw.commons.beta true KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_VOLUME_UP, scanCode=115, metaState=0, flags=0x8, repeatCount=0, eventTime=339612010, downTime=339612010, deviceId=6, source=0x101 } -2147483648 false java.lang.Throwable
        at android.media.session.MediaSessionManager.dispatchVolumeKeyEventInternal(MediaSessionManager.java:365)
        at android.media.session.MediaSessionManager.dispatchVolumeKeyEventAsSystemService(MediaSessionManager.java:358)
        at com.android.internal.policy.PhoneWindow.onKeyDown(PhoneWindow.java:1899)
        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:350)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5557)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5425)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5068)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4936)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5125)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4936)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5101)
        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5262)
        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2590)
        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2100)
        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2091)
        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2567)
        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:326)
        at android.os.Looper.loop(Looper.java:160)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/SessionManager: dispatchVolumeKeyEvent:fr.free.nrw.commons.beta true KeyEvent { action=ACTION_UP, keyCode=KEYCODE_VOLUME_UP, scanCode=115, metaState=0, flags=0x28, repeatCount=0, eventTime=339612712, downTime=339612010, deviceId=6, source=0x101 } -2147483648 false java.lang.Throwable
        at android.media.session.MediaSessionManager.dispatchVolumeKeyEventInternal(MediaSessionManager.java:365)
        at android.media.session.MediaSessionManager.dispatchVolumeKeyEventAsSystemService(MediaSessionManager.java:358)
        at com.android.internal.policy.PhoneWindow.onKeyUp(PhoneWindow.java:2000)
        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:351)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5557)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5425)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5068)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4936)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5125)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4936)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5101)
        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5262)
        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2590)
        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2100)
        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2091)
        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2567)
        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:326)
        at android.os.Looper.loop(Looper.java:160)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/SessionManager: dispatchVolumeKeyEvent:fr.free.nrw.commons.beta true KeyEvent { action=ACTION_UP, keyCode=KEYCODE_VOLUME_UP, scanCode=115, metaState=0, flags=0x8, repeatCount=0, eventTime=339612130, downTime=339612010, deviceId=6, source=0x101 } -2147483648 false java.lang.Throwable
        at android.media.session.MediaSessionManager.dispatchVolumeKeyEventInternal(MediaSessionManager.java:365)
        at android.media.session.MediaSessionManager.dispatchVolumeKeyEventAsSystemService(MediaSessionManager.java:358)
        at com.android.internal.policy.PhoneWindow.onKeyUp(PhoneWindow.java:2000)
        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:351)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5557)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5425)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5068)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4936)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5125)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4936)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4909)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4962)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4928)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5101)
        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5262)
        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2590)
        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2100)
        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2091)
        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2567)
        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:326)
        at android.os.Looper.loop(Looper.java:160)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Here are logs after I wake up my phone. It looks like the app is trying to drag something from server , but it never made it and got trapped

W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper: getSelectedText on inactive InputConnection
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/UploadMediaDetailAdapter$ViewHolder: descItemEditText:androidx.appcompat.widget.AppCompatEditText{ce862b2 VFED..CL. ......I. 0,0-0,0 #7f0900d4 app:id/description_item_edit_text}
D/UploadMediaDetailAdapter$ViewHolder: UploadMediaDetail is fr.free.nrw.commons.upload.UploadMediaDetail@4b07203
D/OnePlusJankManager:  Chor uploadMDM JANK_TYPE_ONCE mViewTitle = fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadActivity--- jank level = 2
D/UploadMediaDetailAdapter$ViewHolder: Description language code is: ccp
E/Choreographer: skip doframe for fr.free.nrw.commons.beta
D/OkHttp: --> GET https://commons.wikimedia.beta.wmflabs.org/w/api.php?format=json&formatversion=2&errorformat=plaintext&action=query&meta=userinfo&uiprop=blockinfo
D/CookieManager: Domain:commons.wikimedia.beta.wmflabs.org
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/UploadMediaDetailAdapter$ViewHolder: descItemEditText:androidx.appcompat.widget.AppCompatEditText{6e2d2be VFED..CL. ......I. 0,0-0,0 #7f0900d4 app:id/description_item_edit_text}
D/UploadMediaDetailAdapter$ViewHolder: UploadMediaDetail is fr.free.nrw.commons.upload.UploadMediaDetail@7bdcf1f
D/UploadMediaDetailAdapter$ViewHolder: Description language code is: ccp
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/UploadMediaDetailAdapter$ViewHolder: descItemEditText:androidx.appcompat.widget.AppCompatEditText{8e0f646 VFED..CL. ......I. 0,0-0,0 #7f0900d4 app:id/description_item_edit_text}
D/UploadMediaDetailAdapter$ViewHolder: UploadMediaDetail is fr.free.nrw.commons.upload.UploadMediaDetail@2f66007
D/UploadMediaDetailAdapter$ViewHolder: Description language code is: ccp
D/OkHttp: <-- 200 https://commons.wikimedia.beta.wmflabs.org/w/api.php?format=json&formatversion=2&errorformat=plaintext&action=query&meta=userinfo&uiprop=blockinfo (2511ms, unknown-length body)
W/System: A resource failed to call close. 
E/Choreographer: skip doframe for fr.free.nrw.commons.beta

And if I straightly go back to sleep from here, the app will crash.

D/Mbgl-HttpRequest: [HTTP] Request with response = 304: Not Modified
D/Mbgl-HttpRequest: [HTTP] Request with response = 304: Not Modified
D/Mbgl-HttpRequest: [HTTP] Request with response = 304: Not Modified
E/Choreographer: skip doframe for fr.free.nrw.commons.beta
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: fr.free.nrw.commons.beta, PID: 25189
    java.lang.RuntimeException: Unable to resume activity {fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadActivity}: java.lang.IllegalStateException: Not allowed to start service Intent { act=fr.free.nrw.commons.upload.upload cmp=fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadService }: app is in background uid UidRecord{9e79b1a u0a115 TPSL bg:+4m0s113ms idle change:cached procs:1 seq(0,0,0)}
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3961)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3993)
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1934)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { act=fr.free.nrw.commons.upload.upload cmp=fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadService }: app is in background uid UidRecord{9e79b1a u0a115 TPSL bg:+4m0s113ms idle change:cached procs:1 seq(0,0,0)}
        at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1595)
        at android.app.ContextImpl.startService(ContextImpl.java:1550)
        at android.content.ContextWrapper.startService(ContextWrapper.java:664)
        at fr.free.nrw.commons.upload.UploadController.prepareService(UploadController.java:81)
        at fr.free.nrw.commons.repository.UploadRemoteDataSource.prepareService(UploadRemoteDataSource.java:82)
        at fr.free.nrw.commons.repository.UploadRepository.prepareService(UploadRepository.java:67)
        at fr.free.nrw.commons.upload.UploadPresenter.onAttachView(UploadPresenter.java:130)
        at fr.free.nrw.commons.upload.UploadPresenter.onAttachView(UploadPresenter.java:25)
        at fr.free.nrw.commons.upload.UploadActivity.onResume(UploadActivity.java:192)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1514)
        at android.app.Activity.performResume(Activity.java:7311)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3953)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3993)聽
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)聽
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)聽
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)聽
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1934)聽
        at android.os.Handler.dispatchMessage(Handler.java:106)聽
        at android.os.Looper.loop(Looper.java:193)聽
        at android.app.ActivityThread.main(ActivityThread.java:6940)聽
        at java.lang.reflect.Method.invoke(Native Method)聽
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)聽
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)聽
E/ACRA: ACRA caught a RuntimeException for fr.free.nrw.commons.beta
    java.lang.RuntimeException: Unable to resume activity {fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadActivity}: java.lang.IllegalStateException: Not allowed to start service Intent { act=fr.free.nrw.commons.upload.upload cmp=fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadService }: app is in background uid UidRecord{9e79b1a u0a115 TPSL bg:+4m0s113ms idle change:cached procs:1 seq(0,0,0)}
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3961)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3993)
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1934)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { act=fr.free.nrw.commons.upload.upload cmp=fr.free.nrw.commons.beta/fr.free.nrw.commons.upload.UploadService }: app is in background uid UidRecord{9e79b1a u0a115 TPSL bg:+4m0s113ms idle change:cached procs:1 seq(0,0,0)}
        at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1595)
        at android.app.ContextImpl.startService(ContextImpl.java:1550)
        at android.content.ContextWrapper.startService(ContextWrapper.java:664)
        at fr.free.nrw.commons.upload.UploadController.prepareService(UploadController.java:81)
        at fr.free.nrw.commons.repository.UploadRemoteDataSource.prepareService(UploadRemoteDataSource.java:82)
        at fr.free.nrw.commons.repository.UploadRepository.prepareService(UploadRepository.java:67)
        at fr.free.nrw.commons.upload.UploadPresenter.onAttachView(UploadPresenter.java:130)
        at fr.free.nrw.commons.upload.UploadPresenter.onAttachView(UploadPresenter.java:25)
        at fr.free.nrw.commons.upload.UploadActivity.onResume(UploadActivity.java:192)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1514)
        at android.app.Activity.performResume(Activity.java:7311)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3953)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3993)聽
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)聽
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)聽
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)聽
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1934)聽
        at android.os.Handler.dispatchMessage(Handler.java:106)聽
        at android.os.Looper.loop(Looper.java:193)聽
        at android.app.ActivityThread.main(ActivityThread.java:6940)聽
        at java.lang.reflect.Method.invoke(Native Method)聽
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)聽
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)聽
W/ACRA: Warning: Acra may behave differently with a debugger attached

Please rebuild with the "prodDebug" flavor, it is better to always use that flavor. Thanks!

I tried the following:

  • Select an image to upload
  • Enter caption/description in the first language
  • Tap '+'
  • Nothing happens, even if waiting for a long time
  • Switch the focus to the other fields
  • Still nothing happens, even if waiting for a long time
  • Add another character to the description field of the first language
  • Now the second language has appeared.

Do you observe the same?

@AntSYau Could you please create new bugs for each crash? (after searching to see whether a bug report already exists for that crash) Thanks! :-)

Yes, that happens on my new build!
Sorry I had little experience in tracking issues. I will look through history reports about the other crash.

@chao19991005 Are you able to reproduce the issue I described above? On the structured-data branch.

Hi锛宨've reproduced that issue on structured-data branch. if chao19991005 doesn't feel like fixing it, i could try it

@nicolas-raoul I have reproduce that issue but I am not sure how to solve that.

What version is your android studio ?

I'm using AS 3.6.1 @hyonisss

@macgills would like to take a look at this, I believe.

@chao19991005 Please git pull as this screen has changed in the structured-data branch.

Actually it is much easier to use than before, thanks to the bigger space.

So now it only feels weird when you try to enter a third language pair.

The feature is pretty unusable for many languages, the data is not persisted so if you start scrolling it just deletes your text. That might be a separate issue but it would probably take entirely rewriting the adapters and data flow to actually sort out cleanly.

There is also the lingering question of the #3508 @nicolas-raoul could you check out my comments on the associated PR and see if I am on the right track as regards the UX?

Hi @nicolas-raoul! I noticed the time lag issue on pressing '+' button. Can I work on it, if no one else is looking into it right now?

@SaumiaSinghal Actually I just tried again (using the app as compiled from the latest master) and I can not see any lag anymore haha... could you please try again with the latest master? (About should show commit version 96cf57711)

Hi @nicolas-raoul! I tried after merging from the latest master. The problem that I see now is there is no lag on pressing '+' button but, I have to scroll to make the new content appear. This can be because of the NestedScrollView over the RecyclerView. It does not allow RecyclerView.addOnScrollListener() to be called. When I removed the NestedScrollView from the XMl file and simply called recyclerView.scrollToPosition(), I didn't encounter this problem at all.

ezgif com-video-to-gif (1)

Having to scroll is not such a big problem, but could you please send a pull request, so that we can check the code? Thanks!
Thanks also for the screencast, it makes it easy to see the result. And it looks like an improvement indeed!

Yeah sure @nicolas-raoul ! I'll open a PR.

Was this page helpful?
0 / 5 - 0 ratings