问题
Already seen: NoClassDefFoundError Android with ActionBarActivity and ActionBarActivity catch an error on Phone
I am trying to use ActionBarCompact in my project. I have linked android-support-v7 project as well as its jar in my project following and checking the steps from lots of sources, but still I am unable to deal with the problem.
When I built my project, there is no error, but there is exception at runtime. Don't know why class is not detected. Please tell me what is wrong. Thanks.
Code:
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.widget.ArrayAdapter;
public class mainMenu extends ActionBarActivity implements ActionBar.OnNavigationListener {
ActionBar actionbar;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menutab);
actionbar = getSupportActionBar();
actionbar.setTitle("Menu");
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> mSpinnerAdapter = ArrayAdapter.createFromResource(this,R.array.menu_items, R.id.simpleText);
actionbar.setListNavigationCallbacks(mSpinnerAdapter, this);
}
@Override
public boolean onNavigationItemSelected(int arg0, long arg1)//item pos, itemid
{
switch (arg0) {
case 0:
System.out.println("selected: " + arg0);
break;
case 1:
System.out.println("selected: " + arg0);
break;
case 2:
System.out.println("selected: " + arg0);
break;
case 3:
System.out.println("selected: " + arg0);
break;
default:
break;
}
return true;
}
}
------------Project Structure and Build Path-----------------
Logcat
回答1:
Try this:
Import support library as a project from
"sdk/extras/android/support/v7/appcompat"
.Reference library in your project (for Eclipse,
"Properties - Android - Add"
).- Build projects (for Eclipse,
"Projects - Build All"
). Make sure, you have"android.support.v7.appcompat"
in your main project gen folder.
If it still doesn't solve your problem, restart eclipse.
then clean and rebuild project
If the problem persists, remove the support library from you computer and redownload it and follow above mentioned steps.
回答2:
Get the latest versions.
Caution: Be certain you import the ActionBar class (and related APIs) from the appropriate package:
If supporting API levels lower than 11: import android.support.v7.app.ActionBar and use getSupportActionBar()
If supporting only API level 11 and higher: import android.app.ActionBar and use getActionBar()
from Google ActionBar
回答3:
I had not the same cause as yours, but it might help someone else.
In ADT base on eclipse, with each new Android project generate is new directory appcompat_v7. I delete duplicates directories (appcompat_7_2, etc..), because all of them using the same versions od SDK.
Then in project.properties path to android.library.reference.1 provide path to non-existing directory.
Solution:
Go to Project properties -> Android -> choose right appcompat_vX directory and delete previouse one.
来源:https://stackoverflow.com/questions/18848578/actionbaractivity-noclassdeffounderror-exception