Olá galera, eu utilizo o android Studio, criei um AlertDialog usando DialogFragment, ele me disponibiliza dois botões e já tentei colocar um redirecionamento nos botões e não consigo porque ele não recebe View como parâmetro. Por favor me ajudem aqui vai meu código :
public class caixaConfirmacao extends DialogFragment {
@OverridepublicDialogonCreateDialog(BundlesavedInstanceState){AlertDialog.Builderbuilder=newAlertDialog.Builder(getActivity());builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title);// Adiciona os botõesbuilder.setPositiveButton(R.string.ok,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intid){//Redirecionamento do botãoIntentredireciona=newIntent(this,Vendas.class);startActivity(redireciona);}}).setNegativeButton(R.string.cancel,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intid){}});returnbuilder.}
Cria uma variavel global de contexto private Context mContext e cria um construtor pra classe caixaConfirmacao dessa forma:
public caixaConfirmacao (Context mContext){
this.mContext=mContext;
}
e na hora de chamar a activity vc usa o mContext no lugar de this
Intent redireciona = new Intent(mContext, Vendas.class);
startActivity(redireciona);
e na activity que chama a classe caixaConfirmacao vc passa o contexto com argumento.
B
Brenddon_Anjos
Só tem um problema, o botão que abre o dialog está em outra classe e é instanciado dessa forma:
//BOTÃO DE CANCELARcancela.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){caixaConfirmacaoconfirma=newcaixaConfirmacao();confirma.show(getSupportFragmentManager(),“dialog”);}});
E pede pra passar o parâmetro do construtor.
G
Solucao aceita
Gilian_Marques1 like
Então, é simples faz o seguinte
publicclasscaixaConfirmacaoextendsDialogFragment{privateContextmContext;// contexo que sera usado para abrr activitypubliccaixaConfirmacao(ContextmContext){this.mContext=mContext;// construtor inicializa o context com o context que foi passao pela primeira activity }@OverridepublicDialogonCreateDialog(BundlesavedInstanceState){AlertDialog.Builderbuilder=newAlertDialog.Builder(getActivity());builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title);// Adiciona os botõesbuilder.setPositiveButton(R.string.ok,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intid){//Redirecionamento do botãoIntentredireciona=newIntent(mContext,Vendas.class);//usa o context pra abrir a activitystartActivity(redireciona);}}).setNegativeButton(R.string.cancel,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intid){}});returnbuilder.}
}
E na sua activity inicial (a que chama o dialogo) vc faz assim
//BOTÃO DE CANCELARcancela.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){caixaConfirmacaoconfirma=newcaixaConfirmacao(MinhaActivity.this);// passa o context para o dialogoconfirma.show(getSupportFragmentManager(),"dialog");}});
G
Gilian_Marques1 like
Ah! experimente usar o getActivity() n lugar de this, em
Intent redireciona = new Intent(this, Vendas.class);
startActivity(redireciona);
isso deve resolver seu problema de forma simples. Se o getActivity() retornar null então use a outra resposta que eu dei q tbm resolve.