我正在尝试实现自定义工具栏,但我遇到了这个错误
java.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈
我有支持库v4& appcompat v7。我尝试了所有的东西,但没有任何作用。
这是我的代码:
MainActivity.java
package com.example.customized_toolbar;
import java.util.ArrayList;
import java.util.zip.Inflater;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.*;
import android.widget.AdapterView;
import android.widget.ListView;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.Toolbar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
/**
* Called when the activity is first created.
*/
Toolbar mToolbar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar= (Toolbar) findViewById(R.id.toolbar);
SetSupportActionBar(mToolbar);
}
private void SetSupportActionBar(Toolbar mToolbar) {
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<include
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar_actionbar"
layout="@layout/toolbar_default"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
toolbar_default.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
菜单文件是main.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_reply"
android:title="Reply"
/>
<item android:id="@+id/action_undo"
android:title="Undo"
/>
</menu>
Styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.AppCompat.Light"></style>
<style name="Theme"></style>
<style name="Theme.AppCompat"></style>
<style name="Theme.AppCompat.NoActionBar"></style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"></style>
<style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowActionBar">false</item>
</style>
</resources><br/>
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.customized_toolbar"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="15"
android:targetSdkVersion="21"/>
<application android:label="@string/app_name"
android:theme="@style/MyTheme"
android:icon="@drawable/ic_launcher">
<activity android:name="MainActivity"
android:label="@string/app_name"
android:theme="@style/MyTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:1)
更改
mToolbar= (Toolbar) findViewById(R.id.toolbar_actionbar);
到
mToolbar= (Toolbar) findViewById(R.id.toolbar);
确保您的MainActivity扩展AppCompatActivity 而不是ActionBarActivity
更改
SetSupportActionBar(mToolbar);
到
setSupportActionBar(mToolbar);
编辑:
public class MainActivity extends AppCompatActivity {
Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar= (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
menu.getItem(0);
menu.getItem(1);
return super.onCreateOptionsMenu(menu);
}
}