我正在尝试按照本教程http://www.androidhive.info/2015/04/android-getting-started-with-material-design/进行操作。当我到达第13步时我测试了应用程序并且它工作正常但是当我到达第23步导航抽屉时我遇到了一个问题
android.support.v7.widget.RecyclerView cannot be instantiated
在阅读其他网站关于此问题的评论后,我得出结论,我必须在预览面板上设置API级别22,但由于我的ADT与我不兼容,我尝试更新它(我的ADT),一切顺利,直到我已经达到了第23步,我现在尝试测试我的应用程序,如果它是基于本教程运行的话。让我感到沮丧的是ADT
unable to bind xxxx to DDMS
我尝试通过遵循各个站点(包括此站点)的其他说明再次修复错误。我从Windows主机文件中添加了127.0.0.1 localhost
,因为除了它只是评论之外没有。我甚至尝试过使用cmd中的代码adb kill-server
和adb start-server
。我也去了window -> preference -> Android -> DDMS
,在那里我尝试将值8601 on Base local debugger port
和check the use ADBHOST
添加到values 127.0.0.1
。我一个接一个地做了每个人,但不幸的是错误仍然存在。
我面临的问题是应用程序无法启动或在bluestack上运行。我尝试运行我的其他应用程序项目,看看它们是否碰巧运行不好但似乎它们运行顺畅,没有错误或蓝图上崩溃所以我认为它与我正在关注的项目有关上面提到的教程,但我不知道如何弄明白,因为我的所有代码都很好,没有红色标记或错误,但他们只是有警告,这对我来说似乎没问题。
这是我的Manifest.xml(您可以在上面的教程中看到其余代码,直到第23步)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.eureka4.studentdictionary"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyMaterialTheme" >
<activity
android:name=".activity.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我的SDK已经是最新版本,最新版本是23,所以我的支持库也是23。
这是我的LogCat我添加了从详细到错误的所有内容:
02-21 18:56:22.596: W/dalvikvm(15690): VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
02-21 18:56:22.596: I/dalvikvm(15690): Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested
02-21 18:56:22.596: W/dalvikvm(15690): VFY: unable to resolve interface method 16375: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
02-21 18:56:22.596: D/dalvikvm(15690): VFY: replacing opcode 0x72 at 0x0002
02-21 18:56:22.596: I/dalvikvm(15690): Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode
02-21 18:56:22.596: W/dalvikvm(15690): VFY: unable to resolve interface method 16379: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
02-21 18:56:22.596: D/dalvikvm(15690): VFY: replacing opcode 0x72 at 0x0002
02-21 18:56:22.656: I/AppCompatViewInflater(15690): app:theme is now deprecated. Please move to using android:theme instead.
02-21 18:56:22.656: I/dalvikvm(15690): Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
02-21 18:56:22.656: W/dalvikvm(15690): VFY: unable to resolve virtual method 406: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
02-21 18:56:22.656: D/dalvikvm(15690): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:22.656: I/dalvikvm(15690): Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
02-21 18:56:22.656: W/dalvikvm(15690): VFY: unable to resolve virtual method 428: Landroid/content/res/TypedArray;.getType (I)I
02-21 18:56:22.656: D/dalvikvm(15690): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:22.706: D/AndroidRuntime(15690): Shutting down VM
02-21 18:56:22.706: W/dalvikvm(15690): threadid=1: thread exiting with uncaught exception (group=0x55e05b20)
02-21 18:56:22.706: D/AndroidRuntime(15690): procName from cmdline: com.eureka4.studentdictionary
02-21 18:56:22.706: E/AndroidRuntime(15690): in writeCrashedAppName, pkgName :com.eureka4.studentdictionary
02-21 18:56:22.746: I/Process(15690): Sending signal. PID: 15690 SIG: 9
02-21 18:56:22.936: W/dalvikvm(15708): VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
02-21 18:56:22.936: I/dalvikvm(15708): Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested
02-21 18:56:22.936: W/dalvikvm(15708): VFY: unable to resolve interface method 16375: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
02-21 18:56:22.936: D/dalvikvm(15708): VFY: replacing opcode 0x72 at 0x0002
02-21 18:56:22.936: I/dalvikvm(15708): Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode
02-21 18:56:22.936: W/dalvikvm(15708): VFY: unable to resolve interface method 16379: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
02-21 18:56:22.936: D/dalvikvm(15708): VFY: replacing opcode 0x72 at 0x0002
02-21 18:56:22.966: I/AppCompatViewInflater(15708): app:theme is now deprecated. Please move to using android:theme instead.
02-21 18:56:22.966: I/dalvikvm(15708): Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
02-21 18:56:22.966: W/dalvikvm(15708): VFY: unable to resolve virtual method 406: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
02-21 18:56:22.976: D/dalvikvm(15708): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:22.976: I/dalvikvm(15708): Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
02-21 18:56:22.976: W/dalvikvm(15708): VFY: unable to resolve virtual method 428: Landroid/content/res/TypedArray;.getType (I)I
02-21 18:56:22.976: D/dalvikvm(15708): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:42.506: W/dalvikvm(15781): VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
02-21 18:56:42.506: I/dalvikvm(15781): Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested
02-21 18:56:42.506: W/dalvikvm(15781): VFY: unable to resolve interface method 16375: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
02-21 18:56:42.506: D/dalvikvm(15781): VFY: replacing opcode 0x72 at 0x0002
02-21 18:56:42.506: I/dalvikvm(15781): Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode
02-21 18:56:42.516: W/dalvikvm(15781): VFY: unable to resolve interface method 16379: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
02-21 18:56:42.516: D/dalvikvm(15781): VFY: replacing opcode 0x72 at 0x0002
02-21 18:56:42.546: I/AppCompatViewInflater(15781): app:theme is now deprecated. Please move to using android:theme instead.
02-21 18:56:42.556: I/dalvikvm(15781): Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
02-21 18:56:42.556: W/dalvikvm(15781): VFY: unable to resolve virtual method 406: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
02-21 18:56:42.556: D/dalvikvm(15781): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:42.556: I/dalvikvm(15781): Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
02-21 18:56:42.556: W/dalvikvm(15781): VFY: unable to resolve virtual method 428: Landroid/content/res/TypedArray;.getType (I)I
02-21 18:56:42.556: D/dalvikvm(15781): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:42.586: D/AndroidRuntime(15781): Shutting down VM
02-21 18:56:42.596: W/dalvikvm(15781): threadid=1: thread exiting with uncaught exception (group=0x55e05b20)
02-21 18:56:42.596: I/Process(15781): Sending signal. PID: 15781 SIG: 9
02-21 18:56:42.596: D/AndroidRuntime(15781): procName from cmdline: com.eureka4.studentdictionary
02-21 18:56:42.596: E/AndroidRuntime(15781): in writeCrashedAppName, pkgName :com.eureka4.studentdictionary
02-21 18:56:42.596: D/AndroidRuntime(15781): file written successfully with content: com.eureka4.studentdictionary StringBuffer : ;com.eureka4.studentdictionary
02-21 18:56:42.596: E/AndroidRuntime(15781): FATAL EXCEPTION: main
02-21 18:56:42.596: E/AndroidRuntime(15781): Process: com.eureka4.studentdictionary, PID: 15781
02-21 18:56:42.596: E/AndroidRuntime(15781): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eureka4.studentdictionary/com.eureka4.studentdictionary.activity.MainActivity}: android.view.InflateException: Binary XML file line #36: Error inflating class fragment
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.os.Handler.dispatchMessage(Handler.java:102)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.os.Looper.loop(Looper.java:136)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.ActivityThread.main(ActivityThread.java:5021)
02-21 18:56:42.596: E/AndroidRuntime(15781): at java.lang.reflect.Method.invokeNative(Native Method)
02-21 18:56:42.596: E/AndroidRuntime(15781): at java.lang.reflect.Method.invoke(Method.java:515)
02-21 18:56:42.596: E/AndroidRuntime(15781): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
02-21 18:56:42.596: E/AndroidRuntime(15781): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
02-21 18:56:42.596: E/AndroidRuntime(15781): at dalvik.system.NativeStart.main(Native Method)
02-21 18:56:42.596: E/AndroidRuntime(15781): Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class fragment
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
02-21 18:56:42.596: E/AndroidRuntime(15781): at com.eureka4.studentdictionary.activity.MainActivity.onCreate(MainActivity.java:25)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.Activity.performCreate(Activity.java:5231)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
02-21 18:56:42.596: E/AndroidRuntime(15781): ... 11 more
02-21 18:56:42.596: E/AndroidRuntime(15781): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.eureka4.studentdictionary.FragmentDrawer: make sure class name exists, is public, and has an empty constructor that is public
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.Fragment.instantiate(Fragment.java:597)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.Fragment.instantiate(Fragment.java:561)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.Activity.onCreateView(Activity.java:4778)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
02-21 18:56:42.596: E/AndroidRuntime(15781): at com.eureka4.studentdictionary.activity.MainActivity.onCreateView(MainActivity.java:1)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
02-21 18:56:42.596: E/AndroidRuntime(15781): ... 21 more
02-21 18:56:42.596: E/AndroidRuntime(15781): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eureka4.studentdictionary.FragmentDrawer" on path: DexPathList[[zip file "/data/app/com.eureka4.studentdictionary-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.eureka4.studentdictionary-2, /system/lib, /system/lib/arm, /data/downloads]]
02-21 18:56:42.596: E/AndroidRuntime(15781): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
02-21 18:56:42.596: E/AndroidRuntime(15781): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
02-21 18:56:42.596: E/AndroidRuntime(15781): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
02-21 18:56:42.596: E/AndroidRuntime(15781): at android.app.Fragment.instantiate(Fragment.java:583)
02-21 18:56:42.596: E/AndroidRuntime(15781): ... 27 more
02-21 18:56:42.756: I/AppCompatViewInflater(15794): app:theme is now deprecated. Please move to using android:theme instead.
02-21 18:56:42.756: I/dalvikvm(15794): Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
02-21 18:56:42.786: W/dalvikvm(15794): VFY: unable to resolve virtual method 406: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
02-21 18:56:42.786: D/dalvikvm(15794): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:42.786: I/dalvikvm(15794): Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
02-21 18:56:42.786: W/dalvikvm(15794): VFY: unable to resolve virtual method 428: Landroid/content/res/TypedArray;.getType (I)I
02-21 18:56:42.786: D/dalvikvm(15794): VFY: replacing opcode 0x6e at 0x0002
02-21 18:56:42.786: D/AndroidRuntime(15794): Shutting down VM
02-21 18:56:42.786: W/dalvikvm(15794): threadid=1: thread exiting with uncaught exception (group=0x55e05b20)
02-21 18:56:42.786: D/AndroidRuntime(15794): procName from cmdline: com.eureka4.studentdictionary
02-21 18:56:42.786: E/AndroidRuntime(15794): in writeCrashedAppName, pkgName :com.eureka4.studentdictionary
02-21 18:56:42.786: D/AndroidRuntime(15794): file written successfully with content: com.eureka4.studentdictionary StringBuffer : ;com.eureka4.studentdictionary
我正在使用Eclipse,因为它的CPU要求比Android Studio轻。另外,我的模拟器是bluestack。
这是我的FragmentDrawer.java
package com.eureka4.studentdictionary;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import com.eureka4.studentdictionary.R;
public class FragmentDrawer extends Fragment {
private static String TAG = FragmentDrawer.class.getSimpleName();
private RecyclerView recyclerView;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private NavigationDrawerAdapter adapter;
private View containerView;
private static String[] titles = null;
private FragmentDrawerListener drawerListener;
public FragmentDrawer() {
}
public void setDrawerListener(FragmentDrawerListener listener) {
this.drawerListener = listener;
}
public static List<NavDrawerItem> getData() {
List<NavDrawerItem> data = new ArrayList<>();
// preparing navigation drawer items
for (int i = 0; i < titles.length; i++) {
NavDrawerItem navItem = new NavDrawerItem();
navItem.setTitle(titles[i]);
data.add(navItem);
}
return data;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// drawer labels
titles = getActivity().getResources().getStringArray(R.array.nav_drawer_labels);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflating view layout
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
adapter = new NavigationDrawerAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) {
containerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
toolbar.setAlpha(1 - slideOffset / 2);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
}
public static interface ClickListener {
public void onClick(View view, int position);
public void onLongClick(View view, int position);
}
static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private ClickListener clickListener;
public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@SuppressWarnings("deprecation")
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildPosition(child));
}
}
});
}
@SuppressWarnings("deprecation")
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
public interface FragmentDrawerListener {
public void onDrawerItemSelected(View view, int position);
}
}
答案 0 :(得分:1)
你的问题是:
02-21 18:56:42.596: E/AndroidRuntime(15781): Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class fragment
...二进制XML文件行#36 ......
确保您的布局xml文件正确无误。
看看这个:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eureka4.studentdictionary.FragmentDrawer"
顺便说一句,我建议您使用GenyMotion代替BlueStack。
确保所有导入都正确并仔细检查依赖项。最好是删除它们并再次添加它们。重建您的项目,然后重试。
可能的解决方案: