2017-02-16 19 views
-1

Ich baue eine einfache Menü-App für meine Klasse. Ich habe einen ListView in meiner App und ich versuche, es so zu machen, dass Sie, wenn Sie auf einen Eintrag in der Liste klicken, zu der entsprechenden Aktivität für diesen Eintrag weitergeleitet werden. Bisher habe ich Intents außerhalb meiner Funktion arbeiten lassen, aber wenn ich es innerhalb einer Funktion starte, stürzt es mein Programm ab. kann mir einer in die richtige Richtung innerhalb des OnItemClickListener aus der runPasta() Funktion hinweisenAbsicht stürzt immer meine App?

//set the item listener 
    menu.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      String selected = ((TextView) view.findViewById(R.id.complaint)).getText().toString(); 
      if(selected.equals("Pasta")){ 
       runPasta(); 
      } 
     } 
    }); 


} 

public void runPasta(){ 
    //Intent myIntent = new Intent(this, PastaItems.class); 
    //myIntent.putStringArrayListExtra("finalList", foodList); 
    this.startActivity(new Intent(this,PastaItems.class)); 

} 
+1

teilen Sie Ihre Log-Katze hier – Piyush

+0

Sehr geehrte, wenn Sie nach Absturz fragen, dann sollten Sie jedes Mal Ihre Crash-Logs für bessere Lösung veröffentlichen ... –

Antwort

4

Du nennst was bedeutet, dass this auf die OnItemClickListener Instanz bezieht. Verwenden Sie ActivityClassName.this anstelle von this.

4

Sie verwenden 'dies' als Kontext; Es funktioniert nicht in SetOnItemClickListener, da es eine anonyme innere Klasse erstellt. Sie müssen also genauer sein. Ersetzen diese mit YourActivity.this

0

Dies könnte Ihr Problem lösen. Mit getContext() gibt Ihnen den entsprechenden Kontext. Try this:

startActivity(new Intent(getContext(),PastaItems.class)); 
0

Sie die Instanz auf adapterView zu runPasta Methode übergeben und von runPasta Methode können Sie nennen es startActivity(new Intent(adapterView.getContext(),PastaItems.class));

0

Achten Sie darauf, die PastaItems Aktivität in Ihrem Manifest erklärt haben.