Pregunta

mi problema parece simple pero no puede llegar a encontrar una respuesta aquí.

Me tienen diferentes actividades en una sola aplicación. Las actividades comienzan entre sí. Tengo un "pantalla principal" que muestra todos los diferentes niveles disponibles, el usuario hace clic en un nivel y que la actividad se almorzaron, cuando los acabados de los usuarios de ese nivel, se puede pulsar el botón de retroceso para ir a la principal de pantalla y empezar otro nivel. Cuando se pulsa el botón de back-Me gustaría volver a llamar la "pantalla principal" de nuevo, ya que esta vez el pulgar para el nivel completado será diferente para mostrar que se ha completado.

Así que ¿Cómo realizar una re-dibujar en una actividad sobre la espalda-botón presionado? (Supongo que debería poner un poco de código en el método Activity.onResume) (Yo uso SharedPreferences para guardar el estado de los niveles de acabados)

La actividad de pantalla principal es básicamente el siguiente:

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maps);

SharedPreferences settings = getSharedPreferences((getResources().getString(R.string.PREFS_HI)),0); /**/ GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this,(settings.getBoolean("level_1_finished", false)))); /**/ gridview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { //Open the map which was clicked on, if there is one if(position+1 > 1){ Toast.makeText(maps.this, "Level " + (position+1) + " is not yet available!", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(maps.this, "Opening Level " + (position+1), Toast.LENGTH_SHORT).show(); Intent myIntent = new Intent(v.getContext(), Tutorial2D.class); startActivity(myIntent); } } }); }

ImageAdapter utiliza entonces el valor booleano verdadero / falso para elegir la fuente de la imagen, ya sea el dedo pulgar sin terminar o el pulgar nivel acabado.

¿Fue útil?

Solución

En primer lugar poner su objet GridView como un miembro de la clase. A continuación, reemplazar el método onResume() en el que se puede volver a configurar el adaptador vista de cuadrícula en base a lo que hizo el usuario.

private GridView gridview;
@Override
protected void onResume() {
    super.onResume();
    gridview.setAdapter(/* your new ImageAdapter here */);
}

Otros consejos

Se debe utilizar el startActivityForResult() método de la Actividad . Básicamente, usted está comenzando su próxima actividad, preguntando por el estado de la solicitud cuando se termine. Justo antes de que finalice, se debe llamar setResult (lo que le permite especificar si el usuario ha completado el nivel o no). La actividad que se llama (la pantalla principal) tendrá su onActivityResult() método llamado. En este método, se puede actualizar sus Vistas, según sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top