Domanda

il mio problema sembra semplice, ma non riesce a trovare una risposta qui.

Ho diverse attività in una sola applicazione. Attività iniziano a vicenda. Ho un "main-screen" che mostra tutti i diversi livelli disponibili, utente fa clic su un livello e che l'attività è pranzato, quando finiture utente quel livello, si può premere il pulsante indietro per andare a main-schermo e iniziare un altro livello. Al rientro pulsante viene premuto vorrei ri-disegnare la "principale-screen" ancora una volta, dal momento che questa volta il pollice per il livello completato sarà diverso per indicare che è stata completata.

Quindi, come si esegue un ri-disegnare su un'attività sul back-pulsante premuto? (Immagino che dovrei mettere un po 'di codice nel metodo Activity.onResume) (Io uso SharedPreferences per salvare lo stato dei livelli finiti)

L'attività principale a schermo è fondamentalmente questo:

    /** 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 utilizza quindi il valore booleano true / false per scegliere la fonte dell'immagine, sia il pollice non finito o il livello di pollice finito.

È stato utile?

Soluzione

Per prima cosa mettere il vostro objet GridView come un membro della classe. Quindi l'override del metodo onResume() in cui è possibile re-impostare l'adattatore vista a griglia in base a ciò che l'utente ha fatto.

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

Altri suggerimenti

Si dovrebbe utilizzare il startActivityForResult() metodo attività . In sostanza, si sta iniziando la vostra prossima attività chiedendo lo stato della richiesta quando finisce. Poco prima finisce, si dovrebbe chiamare setResult (che consente di specificare se l'utente ha completato il livello oppure no). L'attività che ha chiamato (schermo principale) avrà la sua onActivityResult() metodo chiamato. In questo metodo, è possibile aggiornare le vostre opinioni a seconda delle necessità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top