Here is a section of my code. I am trying to make a navigation menu in which when you click on the first list item it launches the activity MrsClubb
. However when I put this into my code it comes up with the error:
Cannot resolve constructor 'Intent(android.widget.AdapterView.OnItemClickListener,java.lang.Class<com....etc>)'
Any ideas how to resolve this?
The double ** shows where in the code the error is.
Here is the section of the code:
@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();
}
};
The Problem:
You cannot use this
to refer to the Activity
inside an inner class, as this
becomes a reference to the inner class. The meaning of the constructor not resolved
message is that the compiler interprets it as
Intent(AdapterView.OnItemClickListener listener, Class class)
which it does not recognize, instead of
Intent(Context context, Class class)
which is correct and what the compiler expects.
The Solution:
Replace
Intent i = new Intent(this, MrsClubb.class);
with
Intent i = new Intent(MyActivity.this, MrsClubb.class);
where MyActivity
is the name of the Activity
class in which this code belongs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With