Java - Aplicación en Android Studio

   
Vista:

Aplicación en Android Studio

Publicado por lorena (1 intervención) el 31/10/2015 11:43:33
Buenos días yo tengo que realizar el siguiente ejercicio:
Botón (showDialog): llama al cuadro de dialogo de selección multiple.
Botón (dialogFragment): llama al cuadro de dialogo de selección multiple.
TextView: muestra los items seleccionados en el cuadro de dialogo cuando el usuario pulse en Aceptar en el cuadro.
Cadro de diálogo de selección múltiple:
Debe mostrar una lista de elementos que el usuario pueda seleccionar (algunos pueden estar ya marcados por defecto).
Los elementos marcados o desmarcados por el usuario en el cuadro de diálogo deben ser los mismos independientemente de si pulsamos en el botón de showDialog ou dialogFragment.
Hacer que a lista de selección sea dinámica.
EditText donde introducir elementos en la lista.
Botón para añadir elementos a la lista
Mi Código es el siguiente:
Activity principal:
public class Main extends FragmentActivity {
private static final int dialogo_multiple=1;
AlertDialog.Builder venta;
static EditText textoeditado;
static TextView texto;
Button botondialogo;
Button botondialogfragment;
Button botonengadir;
private dialogfragment dialogofragmento;
static ArrayList<String> listapalabras= new ArrayList<String>();
static ArrayList<Boolean>listamarcados=new ArrayList<Boolean>();
static String opcionesmarcadas="";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textoeditado = (EditText) findViewById(R.id.editText);
texto = (TextView) findViewById(R.id.textView2);
botondialogo = (Button) findViewById(R.id.btndialogo);
botondialogfragment = (Button) findViewById(R.id.btndialogfragment);
botonengadir = (Button) findViewById(R.id.botonengadir);
dialogofragmento=new dialogfragment();

engadirelementos();
botonengadir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listapalabras.add(textoeditado.getText().toString());
textoeditado.setText("");
listamarcados.add(false);


}
});
botondialogo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(1);
}
});
botondialogfragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle=new Bundle();
bundle.putStringArray("Addelementos", listarelementos());
bundle.putBooleanArray("Addbooleanos", listarmarcados());
dialogofragmento.setArguments(bundle);
FragmentManager fm = getSupportFragmentManager();
dialogofragmento.show(fm,"DialogFragment");

}
});
}
public void engadirelementos(){
listapalabras.add("boligrafo");
listapalabras.add("lapiz");
listapalabras.add("libreta");
listapalabras.add("libro");
listamarcados.add(false);
listamarcados.add(true);
listamarcados.add(true);
listamarcados.add(false);

}

public static String[] listarelementos() {
final String[] nome = new String[listapalabras.size()];
int i = 0;
for (String palabras : listapalabras) {
nome[i] = palabras;
i++;
}

return nome;
}
public static boolean[] listarmarcados(){
final boolean[] opcions=new boolean[listapalabras.size()];
int i=0;
for(Boolean palabrasmarcadas : listamarcados){
opcions[i]=palabrasmarcadas;
i++;
}
return opcions;
}
protected Dialog onCreateDialog(int id) {

venta = new AlertDialog.Builder(this);
venta.setIcon(android.R.drawable.ic_dialog_info);
venta.setTitle("Seleccionaches os seguintes articulos:");
final String [] matriz=listarelementos();
final boolean [] opcionmarcada=listarmarcados();
venta.setMultiChoiceItems(matriz, opcionmarcada, new DialogInterface.OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {

opcionmarcada[which] = true;
Toast.makeText(getApplicationContext(), "Seleccionaches " + matriz[which], Toast.LENGTH_SHORT).show();

}
else
opcionmarcada[which]=false;
Toast.makeText(getApplicationContext(), "Deseleccionaches " + matriz[which], Toast.LENGTH_SHORT).show();



}
});
venta.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
Toast.makeText(getApplicationContext(), "Premeches 'Aceptar'", 1).show();
for (int i = 0; i < opcionmarcada.length; i++) {
if(opcionmarcada[i])
texto.setText(opcionesmarcadas = opcionesmarcadas+ matriz[i] + " " );
}

}
});
venta.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
Toast.makeText(getApplicationContext(), "Premeches 'Cancelar'", 1).show();

}
});

return venta.create();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}
Fragment Dialog:
public class dialogfragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){

final String [] matriz=getArguments().getStringArray("Addelementos");
final boolean [] opcionmarcada=getArguments().getBooleanArray("Addbooleanos");
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setIcon(android.R.drawable.ic_dialog_info)
.setTitle("Seleccionaches os seguintes articulos:")
.setMultiChoiceItems(matriz, opcionmarcada, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
Toast.makeText(getActivity(), "Seleccionaches " + matriz[which], Toast.LENGTH_SHORT).show();
opcionmarcada[which] = true;
} else
Toast.makeText(getActivity(), "Deseleccionaches " + matriz[which], Toast.LENGTH_SHORT).show();
opcionmarcada[which] = false;


}
})
.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
Toast.makeText(getActivity(), "Premeches 'Aceptar'", 1).show();
for (int i = 0; i < opcionmarcada.length; i++) {
if (opcionmarcada[i])
Main.texto.setText(Main.opcionesmarcadas = Main.opcionesmarcadas + matriz[i] + " ");
}

}
}).setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
Toast.makeText(getActivity(), "Premeches 'Cancelar'", 1).show();

}
});

return builder.create();
}
}
Ese es mi Código, pero cuando entro en el dialog fragment y deselecciono una opción le doy a aceptar para que me guarde los cambios pero no me los guarda y no sé porque, además despues de lanzar el dialogo si añado una palabra no me aparece. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder