我一直在尝试写一些东西,以便在出现alertDialog弹出窗口时,单击ok,然后登录图标将被隐藏,注销和设置图标将可见。但是我就是无法正常工作。希望有人可以帮助我。我已经有一段时间了...
在MainActivity中:
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
// Login button
if (id == R.id.loginButton){
LoginDialog loginDialog = new LoginDialog();
loginDialog.show(getSupportFragmentManager(), "loginDialog");
}
// Logout Button
if (id == R.id.logoutButton){
}
// Setting Button
if (id == R.id.settingsButton){
}
return super.onOptionsItemSelected(item);
}
在LoginDialog类中:
public class LoginDialog extends AppCompatDialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.login_dialog, null);
builder.setView(view)
.setTitle("Login")
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* I tried
Menu menu = findItem(R.id.loginButton).setVisible(false);
but that's not correct
I tried this here because it works in MainActivity but not here */
}
});
return builder.create();
}
}
创建界面
interface MyInterface{
public void hideMenuItem();
}
制作活动实施界面
class MainActivity implements MyInterface {
所以您的DialogFragment的onClick看起来像这样
@Override
public void onClick(DialogInterface dialog, int which) {
MyInterface myInterface = (MyInterface) getActivity();
if(myInterface != null){
myInterface.hideMenuItem();
}
}