我解决了这个问题,并没有真正解决,但找到了一个有效的解决方法。
解决方法是我设计了一个文本编辑器(看起来类似于全屏 UI),并在单击每个这些EditBox
es 时触发新的 UI 活动(startActivityForResult()
这样一旦完成,控制权就会交还给调用活动)编辑完成后,文本被传输回主屏幕。
我还确保那些转移控制权的框不会获得焦点,以便它们立即将控制权转移到新 UI。
通过这种方式,我已经能够实现一个取消按钮,它现在实际上允许用户返回而不保存他不小心做出的更改。
我对新想法持开放态度,但这对我有用。
中的代码Activity
:
public void onBtnClicked(View v) {
EditText current_text_box = (EditText) v;
Intent intent = new Intent(ObservationActivity.this,
TexteditorActivity.class);
intent.putExtra("start_text", current_text_box.getText().toString());
intent.putExtra("start_position", current_text_box.getSelectionStart());
startActivityForResult(intent, v.getId());
}
XML 中的代码:
<EditText
android:id="@+id/observation_text"
style="@style/icon_text"
android:focusable="false"
android:imeOptions="flagNoExtractUi"
android:inputType="textMultiLine"
android:onClick="onBtnClicked" >
</EditText>
要创建我使用代码的全屏 UI,您可以使用任何类似 ( http://android-richtexteditor.googlecode.com/ )