Domanda

Ho implementato una "schermata iniziale" per la mia applicazione, che consiste in una GridView contenente icone e testo.Funziona bene, e posso aggiungere un onItemClickListener in modo che il tocco di un'icona creerà un brindisi, ad esempio.Ma non sono sicuro di come chiamare StartactivityForresult () da qui.Potrei passare nel contesto dell'applicazione e usarlo per creare l'intento ecc., Ma questo non si sente come il giusto modo di farlo.

Il mio codice sembra questo:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    GridView gridview = (GridView) findViewById(R.id.icons_gridview);
    gridview.setAdapter(new HomeScreenAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            switch(position){
            case 0:
                //need to start new activity 1 from here
                break;
            case 1:
                //need to start new activity 2 from here
                break;
            }
        }
    });
.

Grazie per qualsiasi aiuto,

TLB

È stato utile?

Soluzione

Metodo 1 (My Metodo preferito)

Passando il nome di attività. Questo come contesto è il modo in cui lo faccio.Ad esempio

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    GridView gridview = (GridView) findViewById(R.id.icons_gridview);
    gridview.setAdapter(new HomeScreenAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        switch(position){
        case 0:
            Intent intent = new Intent(MyActivity.this, NextActivity.class);
            startActivityForResult(intent, 0);
            break;
        case 1:
            //need to start new activity 2 from here
            break;
        }
    }
});
.

Metodo 2

È possibile passare getApplicationContext() come contesto;

Metodo 3

Avere un campo Context mContext è un metodo comune.Impostala all'inizio del tuo onCreate, quindi utilizzare mContext per avviare le tue attività.

private Context mContext;
.

quindi

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    mContext = this;

    ...
 }
.

Quindi è possibile avviare una nuova attività utilizzando MCONTEXT come parametro di contesto

Intent intent = new Intent(mContext, NextActivity.class);
startActivityForResult(intent, 0);
.

Altri suggerimenti

Basta usare

startActivityForResult(new Intent(MainActivity.this, Activity1.class));
.

E tutto è facile

Il contesto dovrebbe essere il contesto dell'attività corrente."Questo" funzionerebbe ammirevolmente.

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