나는 이것이 상당히 간단한 개념이라고 생각하지만 인터넷에서 대답을 찾을 수 없었습니다. EditText에서 사용자 정의 컨트롤을 만드는 방법은 무엇입니까?
은 내가 TextWatcher 사용하여 글고 내부의 입력 포맷하는 주요 활동 작성 :public class MainActivity extends Activity implements TextWatcher {
EditText text;
int textCount;
String numba1, numba, n;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText)findViewById(R.id.editText1);
text.addTextChangedListener(this);
}
/* TextWatcher Implementation Methods */
public void beforeTextChanged(CharSequence s, int arg1, int arg2, int after) {
// Does Nothing
}
public void onTextChanged(CharSequence s, int start, int before, int end) {
//Does random stuff with text
}
public void afterTextChanged(Editable s) {
//Does much more random stuff with text
}
protected void onResume() {
super.onResume();
SharedPreferences prefs = getPreferences(0);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
text.setText(restoredText, TextView.BufferType.EDITABLE);
int selectionStart = prefs.getInt("selection-start", -1);
int selectionEnd = prefs.getInt("selection-end", -1);
if (selectionStart != -1 && selectionEnd != -1) {
text.setSelection(selectionStart, selectionEnd);
}
}
}
protected void onPause() {
super.onPause();
SharedPreferences.Editor editor = getPreferences(0).edit();
editor.putString("text", text.getText().toString());
editor.putInt("selection-start", text.getSelectionStart());
editor.putInt("selection-end", text.getSelectionEnd());
editor.commit();
}
다음, 나는 내 프로젝트에서이 여러 번 재사용, 그래서 사용자 정의의 EditText 컨트롤을 만들려 할을하는 원본과 모양이 비슷하지만 모든 서식을 지정하고 환경 설정을 저장합니다.
가 이상적으로 난 그냥 표시 사용자 정의 글고 치기 위해 XML을 사용 할 수있을 것입니다 :
<view
class="com.android.example.myEditText"
id="@+id/editText" />
을 내가 Android's Custom Components 튜토리얼을 읽었습니다,하지만 대신에 그들의 행동의 구성 요소의 전망을 변경하는 방법에 대한 주로 회담 그래서 저는 캔버스 사용에 주저합니다.
그래서 어떻게해야합니까?
처럼 청취자에게
코드는 것 무언가를 추가 할
addTextChangedListner
를 사용합니다. 그러나 'onCreate', 'onPause'및 'onResume'은 'EditText'에 대해 정의되지 않은 것에 대해 불평하는 것으로 보입니다. 나는 명백한 것을 놓치고 있는가? 또한 샘플 API에서는 인 텐트를 많이 사용하는 것처럼 보입니다. 내 코드가 도움이 될까요? –컨트롤에 대한 참조를 선언하거나 'findViewById'를 사용하여 참조를 검색 할 때'EditText' 대신'MyEditText' (또는 클래스 이름을 지정하십시오)를 사용하십시오. 희망은 당신이 언급 한 정의되지 않은'EditText'를 해결합니다. –