EditText : 사용자 정의 Editable로 setText ()를 호출 할 때 커서가 업데이트되지 않습니다.

James Ko

.NET Framework Editable의 기반으로 구현되는 사용자 지정 형식을 사용하는 데 문제가 있습니다 EditText. 내 코드는 다음과 같습니다.

// This is a custom type that implements Editable.
// It's just a wrapper over a SpannableStringBuilder, with some
// irrelevant added functionality.
public class ColoredText implements Editable {
    private final SpannableStringBuilder builder;

    public ColoredText(String text) {
        this.builder = new SpannableStringBuilder(text);
    }

    // All Editable methods are implemented through this.builder.
    @Override
    public Editable replace(int i, int i1, CharSequence charSequence, int i2, int i3) {
        this.builder.replace(i, i1, charSequence, i2, i3);
        return this;
    }

    ...
}

public class NoCopyEditableFactory extends Editable.Factory {
    @Override
    public Editable newEditable(CharSequence source) {
        return (Editable) source;
    }
}

// In MainActivity.java
@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);

    setContentView(R.layout.main);

    String line = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    String text = TextUtils.join("\n", Collections.nCopies(100, line));
    Editable e = new ColoredText(text);

    EditText et = (EditText) findViewById(R.id.editText);
    et.setEditableFactory(new NoCopyEditableFactory()); // This line is causing trouble.
    et.setText(e, TextView.BufferType.EDITABLE);
}

// In the MainActivity layout file
<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

어떤 이유로을 주석 처리 NoCopyEditableFactory하면 커서가 제대로 업데이트됩니다. 그러나를 new로 EditText복사하지 않도록 강제하는 줄의 주석 처리를 제거 하면 텍스트의 새 위치를 클릭해도 커서가 업데이트되지 않습니다. 왜 이런거야?ColoredTextSpannableStringBuilder

James Ko

문제는 내 Editable구현으로 밝혀졌습니다 . 오작동하는 코드를 삭제 한 후에는 정상적으로 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

FabricJS : 경로 좌표를 변경할 때 경로의 경계 상자가 업데이트되지 않습니다.

분류에서Dev

페이지에서 사용자 지정 새로 고침 버튼을 클릭 할 때 테이블에서 데이터가 업데이트되지 않습니다.

분류에서Dev

$ this를 사용할 때 정의되지 않은 메서드 호출

분류에서Dev

cellForItemAtIndexPath : 사용자 정의 UICollectionViewLayout 하위 클래스를 사용할 때 호출되지 않습니다.

분류에서Dev

yield Request를 호출 할 때 사용자 정의 콜백이 호출되지 않고 parse 메서드가 호출되는 이유는 무엇입니까?

분류에서Dev

Django 사용자 정의 양식-__init__ 메서드를 사용할 수있을 때 is_valid가 깨끗한 메서드를 호출하지 않습니다.

분류에서Dev

자바 스크립트 함수를 호출 할 때 "x가 정의되지 않았습니다."

분류에서Dev

Server.Transfer를 사용할 때 사용자 지정 HttpModule이 호출되지 않습니다.

분류에서Dev

Model.findOneAndUpdate를 사용할 때 저장 및 업데이트를위한 Mongoose 사전 후크가 호출되지 않습니다.

분류에서Dev

ControllerAs 및 사용자 지정 지시문을 사용할 때보기가 업데이트되지 않습니다.

분류에서Dev

iOS 키 체인에서 사용자 이름 / 암호를로드 할 때 클릭 할 때까지 Ionic Angular 입력이 업데이트되지 않음

분류에서Dev

사용자 정의 함수를 호출 할 때 입력 유형 = 파일 onchange 이벤트가 발생하지 않습니다.

분류에서Dev

함수를 호출 할 때마다 난수가 업데이트되지 않습니다.

분류에서Dev

페이지를 복사 할 때 슬러그 필드가 제대로 업데이트되지 않습니다.

분류에서Dev

사용자가 필드를 동적으로 업데이트 할 때가 아니라 업데이트 할 때만 함수를 호출하는 방법

분류에서Dev

commit = False로 save ()를 호출 할 때 Django의 FileField "upload_to"메소드가 호출되지 않습니다.

분류에서Dev

Modernizr : 'videoautoplay'사용자 지정 테스트를 포함 할 때 정의가 정의되지 않았습니다.

분류에서Dev

boost :: pool_allocator를 사용할 때 이동 생성자가 호출되지 않습니다.

분류에서Dev

별도의 구성 요소에서 메서드를 호출 할 때 Angular Dom이 업데이트되지 않음

분류에서Dev

Promise의 then () 내부에서 변수를 설정할 때 변수가 업데이트되지 않습니다.

분류에서Dev

ExecutorService를 사용할 때 Thread.interrupt가 호출되지 않습니다.

분류에서Dev

Firebase로 계정을 만들 때 사용자 문서를 만들려고 할 때 "정의되지 않은 '사용자'속성을 읽을 수 없습니다."

분류에서Dev

ajax 호출로 선택 필드를 업데이트 할 때 Select2가 선택되지 않음

분류에서Dev

`this`는 다른 컨텍스트에서 메소드를 호출 할 때 정의되지 않습니다.

분류에서Dev

EditText의 setText가 제대로 작동하지 않습니다.

분류에서Dev

다른 경로를 호출 할 때 Sinatra가 로깅되지 않습니다.

분류에서Dev

각도에서 ng-if를 사용할 때보기가 업데이트되지 않습니다.

분류에서Dev

새 사용자가 Swift 및 Parse를 사용하여 로그인 할 때 현재 사용자로 데이터가 업데이트되지 않음

분류에서Dev

스캐너를 사용할 때 다른 클래스의 배열이 업데이트되지 않습니다.

Related 관련 기사

  1. 1

    FabricJS : 경로 좌표를 변경할 때 경로의 경계 상자가 업데이트되지 않습니다.

  2. 2

    페이지에서 사용자 지정 새로 고침 버튼을 클릭 할 때 테이블에서 데이터가 업데이트되지 않습니다.

  3. 3

    $ this를 사용할 때 정의되지 않은 메서드 호출

  4. 4

    cellForItemAtIndexPath : 사용자 정의 UICollectionViewLayout 하위 클래스를 사용할 때 호출되지 않습니다.

  5. 5

    yield Request를 호출 할 때 사용자 정의 콜백이 호출되지 않고 parse 메서드가 호출되는 이유는 무엇입니까?

  6. 6

    Django 사용자 정의 양식-__init__ 메서드를 사용할 수있을 때 is_valid가 깨끗한 메서드를 호출하지 않습니다.

  7. 7

    자바 스크립트 함수를 호출 할 때 "x가 정의되지 않았습니다."

  8. 8

    Server.Transfer를 사용할 때 사용자 지정 HttpModule이 호출되지 않습니다.

  9. 9

    Model.findOneAndUpdate를 사용할 때 저장 및 업데이트를위한 Mongoose 사전 후크가 호출되지 않습니다.

  10. 10

    ControllerAs 및 사용자 지정 지시문을 사용할 때보기가 업데이트되지 않습니다.

  11. 11

    iOS 키 체인에서 사용자 이름 / 암호를로드 할 때 클릭 할 때까지 Ionic Angular 입력이 업데이트되지 않음

  12. 12

    사용자 정의 함수를 호출 할 때 입력 유형 = 파일 onchange 이벤트가 발생하지 않습니다.

  13. 13

    함수를 호출 할 때마다 난수가 업데이트되지 않습니다.

  14. 14

    페이지를 복사 할 때 슬러그 필드가 제대로 업데이트되지 않습니다.

  15. 15

    사용자가 필드를 동적으로 업데이트 할 때가 아니라 업데이트 할 때만 함수를 호출하는 방법

  16. 16

    commit = False로 save ()를 호출 할 때 Django의 FileField "upload_to"메소드가 호출되지 않습니다.

  17. 17

    Modernizr : 'videoautoplay'사용자 지정 테스트를 포함 할 때 정의가 정의되지 않았습니다.

  18. 18

    boost :: pool_allocator를 사용할 때 이동 생성자가 호출되지 않습니다.

  19. 19

    별도의 구성 요소에서 메서드를 호출 할 때 Angular Dom이 업데이트되지 않음

  20. 20

    Promise의 then () 내부에서 변수를 설정할 때 변수가 업데이트되지 않습니다.

  21. 21

    ExecutorService를 사용할 때 Thread.interrupt가 호출되지 않습니다.

  22. 22

    Firebase로 계정을 만들 때 사용자 문서를 만들려고 할 때 "정의되지 않은 '사용자'속성을 읽을 수 없습니다."

  23. 23

    ajax 호출로 선택 필드를 업데이트 할 때 Select2가 선택되지 않음

  24. 24

    `this`는 다른 컨텍스트에서 메소드를 호출 할 때 정의되지 않습니다.

  25. 25

    EditText의 setText가 제대로 작동하지 않습니다.

  26. 26

    다른 경로를 호출 할 때 Sinatra가 로깅되지 않습니다.

  27. 27

    각도에서 ng-if를 사용할 때보기가 업데이트되지 않습니다.

  28. 28

    새 사용자가 Swift 및 Parse를 사용하여 로그인 할 때 현재 사용자로 데이터가 업데이트되지 않음

  29. 29

    스캐너를 사용할 때 다른 클래스의 배열이 업데이트되지 않습니다.

뜨겁다태그

보관