私は、ユーザーが何らかのデータを入力するUIにいくつかのEditText行を持っています。ユーザーは、fListenerEditText行にDatePickerフラグメントのDateを入力します。フォーカスは、cListenerEditTextである最初のEditText行に戻されます。デフォルトの[戻る]ボタンの動作では、ユーザーが[戻る]ボタンを押すと、アクティビティが終了し、日付データがすぐに失われ、ユーザーは前のアクティビティに戻ります。android:Backボタンを上書きするにはどうしたらいいですか?
私の場合、fListenerEditTextで以前に入力した日付を破棄したいかどうかをユーザーに尋ねるDialogフラグメントを起動したいと思います。ユーザが「OK」ボタンをクリックすると、データは破棄され、アクティビティは閉じられ、ユーザは前のアクティビティに戻る。私の場合は、ユーザーが戻るボタンのキーを押したときにソフトキーボードが開いていないことに注意してください。
FocusListenerと戻るボタンリスナーを一緒に使用するにはどうすればよいですか?私はここで何が欠けていますか?
public class EditActivity extends AppCompatActivity {
private ListenerEditText cListenerEditText, dListenerEditText, eListenerEditText, fListenerEditText;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_edit);
cListenerEditText = (ListenerEditText) findViewById(id.CEditText);
dListenerEditText = (ListenerEditText) findViewById(id.DEditText);
eListenerEditText = (ListenerEditText) findViewById(id.EEditText);
fListenerEditText = (ListenerEditText) findViewById(id.FEditText);
final int stringDueDate = fListenerEditText.getText().toString().replace(" ", "").length();
cListenerEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus && fListenerEditText.getText().length() > 0) {
// add some type of Back button listener here.
}
}
});
ニース。私が何らかの理由でフォーカスがcListenerEditText行にあり、fListenerEditText行ではなく、ユーザーが「戻る」ボタンを押したときに、何とか処理する必要があることだけです。だから私は、cListernerEditTextのFocusListenerが必要とfListenerEditTextの長さをテストします。どのように達成するための任意の考え? – AJW
更新された回答を確認してください。使用条件: 'if(cListenerEditText.hasFocus()&& fListenerEditText.getText()。toString()。length()> 0){......}' – FAT
よろしいですか。またonCreate()セクションにonBackPressed()を追加しないでください。アクティビティーの主要部分を追加するだけですか? – AJW