gpt4 book ai didi

java - 自定义对话框构造函数

转载 作者:行者123 更新时间:2023-12-01 06:24:40 25 4
gpt4 key购买 nike

我的界面:

public interface LoginDialogDismissListener {
void loginDialogCancel();
void loginDialogSuccess();
}

我的 Activity :

public class MainActivity extends Activity implements LoginDialogDimissListener {
public void loginDialogCancel() {
//do stuff here
}

public void loginDialogSuccess() {
//do some other stuff here!
}
}

我的登录对话框:

public class LoginDialog extends Dialog implements OnClickListener, LoginChecker {

private ProgressBar pbLogin;
private TextView tvLoginstatus;
private Button cancel;
private Button save;
private EditText username;
private EditText password;

public LoginDialog(Context context) {
super(context);
setContentView(R.layout.login_dialog);
pbLogin = (ProgressBar) findViewById(R.id.progressBarLogin);
tvLoginstatus = (TextView) findViewById(R.id.dialogTvLoginstatus);
cancel = (Button) findViewById(R.id.bDialogCancel);
save = (Button) findViewById(R.id.bDialogSave);
username = (EditText) findViewById(R.id.dialogEtUsername);
password = (EditText) findViewById(R.id.dialogEtPassword);

setTitle("Brukerdata");
pbLogin.setVisibility(View.INVISIBLE);
tvLoginstatus.setVisibility(View.INVISIBLE);

cancel.setOnClickListener(this);
save.setOnClickListener(this);
//setOnDismissListener(this);
}

public void onClick(View v) {
if (v.getId() == R.id.bDialogSave) {
saveClick();
}
else if (v.getId() == R.id.bDialogCancel) {
cancelClick();
}
}

private void saveClick() {
save.setEnabled(false);
String[] credentials = {username.getText().toString(), password.getText().toString()};
pbLogin.setVisibility(View.VISIBLE);
CheckLoginTask logintask = new CheckLoginTask(this, credentials, 0);
logintask.execute();
}

private void cancelClick() {
this.dismiss();
//Here I want to call LoginDialogDismissListener.loginDialogCancel()
}

//Called from my AsyncTask (CheckLoginTask)
public void onLoginSuccess(int requestCode) {
this.dismiss();
//Here I want to call LoginDialogDismissListener.loginDialogSuccess()
}

//Called from my AsyncTask (CheckLoginTask)
public void onLoginFail(int requestCode) {
pbLogin.setVisibility(View.INVISIBLE);
tvLoginstatus.setText("Feil brukernavn/passord ...");
tvLoginstatus.setVisibility(View.VISIBLE);
save.setEnabled(true);
}
}

如果您阅读了我在代码中的注释,您会发现我想使用它从我的界面实现的方法来调用我的 MainActivity。问题是我不知道如何将我的 Activity 仅一次发送到我的LoginDialog。

我的意思是,首先它需要上下文,其次我想提供它 LoginDialogDismissListener (可能应该更改该名称...),这是我的 Activity 。

我觉得有比这更好的解决方案:

//Constructor
public LoginDialog(Context context, LoginDialogDismissListener listener) {
}

//Activity creating the Dialog
new LoginDialog(this, this);

我尝试将构造函数定义为仅将 LoginDialogDismissListener 作为参数,但不允许我强制转换它或以某种方式获取我的 super(context)< 所需的上下文

最佳答案

#android-dev 的回答

创建一个实现我的界面的父 Activity ,并让所有 Activity 再次扩展它。

关于java - 自定义对话框构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com