我正在構建一個Android應用程序,並且該應用程序有一個開放部分和一些需要驗證的操作。在Android中調用登錄對話框的最佳實踐
我所做的是當用戶點擊一個需要驗證的操作時,顯示一個登錄對話框,用戶可以登錄並且登錄將有效30分鐘。
所以我有一個片段中的3個按鈕,當點擊時檢查用戶是否登錄,如果不調用登錄對話框。
問題是:如何識別單擊按鈕,因爲當用戶單擊按鈕並且未通過身份驗證時,我只是創建登錄對話框並將setTargetFragment設置爲調用者片段,這與3鈕釦。
有沒有辦法將參數傳遞給登錄對話框來識別?
的代碼如下:
當用戶點擊該按鈕:
final DialogFragment loginDialog = new LoginDialogFragment();
loginDialog.setTargetFragment(this, 0);
btnAprovar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!LoginService.getInstance().isLoggedOn()) {
loginDialog.show(getFragmentManager(), "Login");
}
}
});
,並在對話框:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View v = inflater.inflate(R.layout.fragment_login_dialog, null);
final EditText txtUser = (EditText) v.findViewById(R.id.txtUsername);
final EditText txtPwd = (EditText) v.findViewById(R.id.txtPassword);
builder.setView(v)
.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
DoLogin dl = new DoLogin();
dl.execute(txtUser.getText().toString(), txtPwd.getText().toString());
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
}
private void DoPost(Boolean _result) {
if (_result.equals(true)) {
((PublicacaoDetailFragment) this.getTargetFragment()).onAuthTrue();
} else {
((PublicacaoDetailFragment) this.getTargetFragment()).onAuthFalse();
}
}
什麼是做到這一點的最佳做法?
感謝
我很困惑。你想知道哪個按鈕導致對話框出現? –
是的,所以在登錄對話框的回調中,我可以繼續執行正確的操作...或者更好的方式進行登錄 – RLuceac
爲什麼你不向LoginDialogFragment.show方法傳遞額外的參數?你可以傳入按鈕的int資源ID,或者一個枚舉或一個String ......真的...... –