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 {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// Adiciona os botões
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Redirecionamento do botão
Intent redireciona = new Intent(this, Vendas.class);
startActivity(redireciona);
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
return builder.
}
}
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.
Só tem um problema, o botão que abre o dialog está em outra classe e é instanciado dessa forma:
//BOTÃO DE CANCELAR
cancela.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
caixaConfirmacao confirma = new caixaConfirmacao();
confirma.show(getSupportFragmentManager(), “dialog”);
}
});
E pede pra passar o parâmetro do construtor. 
Então, é simples faz o seguinte
public class caixaConfirmacao extends DialogFragment {
private Context mContext; // contexo que sera usado para abrr activity
public caixaConfirmacao (Context mContext){
this.mContext=mContext; // construtor inicializa o context com o context que foi passao pela primeira activity
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// Adiciona os botões
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Redirecionamento do botão
Intent redireciona = new Intent(mContext, Vendas.class); //usa o context pra abrir a activity
startActivity(redireciona);
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
return builder.
}
}
E na sua activity inicial (a que chama o dialogo) vc faz assim
//BOTÃO DE CANCELAR
cancela.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
caixaConfirmacao confirma = new caixaConfirmacao(MinhaActivity.this); // passa o context para o dialogo
confirma.show(getSupportFragmentManager(), "dialog");
}
});
1 curtida
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.
1 curtida
Man deu certinho, você é o cara, Te amo!!
1 curtida