我在ui屏幕上有一个edittext行,用户可以输入一个句子。如果用户将光标放在句子的中间,然后改变方向,我希望光标移动到句子的末尾。我的理解是,操作系统创建了一个新的活动和新的方向改变的焦点,所以我设置了下面的代码,但没有效果。请告知。
部分活动文件:

...
cListenerEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
         @Override
         public void onFocusChange(View v, boolean hasFocus) {
             if (hasFocus && (cListenerEditText.getText().length() > 0)) {
                cListenerEditText.setSelection(cListenerEditText.getText().length());
             }
         }
    });

最佳答案

尝试在onResume中执行此操作,检查布尔字段,使其仅在娱乐上工作。

if(!initialized) {
    initialized = true;
    cListenerEditText.setSelection(cListenerEditText.getText().length());
}

编辑:
样本活动
public class MainActivity extends AppCompatActivity {

  private EditText cListenerEditText;
  private boolean initialized = false;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    cListenerEditText = findViewById(R.id.listenerEditText);
  }

  @Override
  protected void onResume() {
    super.onResume();
    if(!initialized) {
      initialized = true;
      cListenerEditText.setSelection(cListenerEditText.getText().length());
    }
  }
}

10-06 12:38