想要在Android Studio中单击AlertDialog的确定按钮时更改操作栏图标

问题描述 投票:0回答:1

我一直在尝试写一些东西,以便在出现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();
    }
}
java android
1个回答
0
投票

创建界面

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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.