2015-03-30 18 views
9

Hier ist ein Abschnitt meines Codes. Ich versuche ein Navigationsmenü zu erstellen, in dem beim Klicken auf den ersten Listeneintrag die Aktivität MrsClubb gestartet wird. Aber wenn ich das in meinen Code einfüge kommt es mit dem Fehler:Android kann Konstruktorabsicht nicht auflösen

Cannot resolve constructor 'Intent(android.widget.AdapterView.OnItemClickListener,java.lang.Class<com....etc>)' 

Irgendwelche Ideen, wie man das löst?

Die Doppel ** zeigt, wo im Code der Fehler ist. Hier

ist der Abschnitt des Codes:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); 
    mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer); 
    mDrawerList = (ListView)findViewById(android.R.id.list); 
    mDrawerListItems = getResources().getStringArray(R.array.drawer_list); 
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mDrawerListItems)); 
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      switch(position) { 
       case 0: 
        Intent i = new Intent**(this, MrsClubb.class);** 
        startActivity(i); 
      } 
      mDrawerLayout.closeDrawer(mDrawerList); 

     } 
    }); 
    mDrawerToggle = new ActionBarDrawerToggle(this, 
      mDrawerLayout, 
      toolbar, 
      R.string.drawer_open, 
      R.string.drawer_close){ 
     public void onDrawerClosed(View v){ 
      super.onDrawerClosed(v); 
      invalidateOptionsMenu(); 
      syncState(); 
     } 
     public void onDrawerOpened(View v){ 
      super.onDrawerOpened(v); 
      invalidateOptionsMenu(); 
      syncState(); 
     } 
    }; 
+2

Verwenden Sie 'view.getContext()' anstelle von 'this' als ersten Parameter zu Intent Konstruktor –

+0

@Zygotelnit yeah Ich habe, leider muss ich 90 Minuten warten, um zu posten, aber wenn ich es poste werde ich einen Link posten hier für Sie zu sehen. –

+0

@ JonathanChappell: Warten auf Ihre Frage :) –

Antwort

26

Das Problem:

Sie nicht this zum Activity innerhalb einer inneren Klasse beziehen können, wie this wird ein Verweis auf die innere Klasse. Die Bedeutung der constructor not resolved Nachricht ist, dass der Compiler es als

Intent(AdapterView.OnItemClickListener listener, Class class) 

interpretiert, die es nicht, statt

Intent(Context context, Class class) 

erkennt was richtig ist und was der Compiler erwartet.

Die Lösung:

ersetzen

Intent i = new Intent(this, MrsClubb.class); 

mit

Intent i = new Intent(MyActivity.this, MrsClubb.class); 

wo MyActivity ist der Name der Activity Klasse, in der dieser Code gehört.

+0

Danke! Der Fehler ist behoben, aber immer wenn ich meine App starte und auf Position 0 klicke, hört die App auf zu laufen. –

Verwandte Themen