1

У меня эта ошибка времени выполнения почти на неделю и я не могу найти решение (я новый программист для Android). Пожалуйста, помогите мне!Ошибка выполнения: исключение ClassNotFound

Журнал находится в конце этого сообщения. Я знаю, что есть некоторые похожие вопросы, но я не мог найти решение моей проблемы.

Я пытаюсь вызвать класс из активности, используя Intent, но ошибка времени выполнения говорит о том, что этот класс не найден.

Это файл журнала:

07-01 13:22:57.098: E/dalvikvm(1488): Could not find class 'com.XXX.ui.ViewPager', 
referenced from method com.XXX.ui.MainIWrapper.onCreate 
07-01 13:22:57.338: E/AndroidRuntime(1488): FATAL EXCEPTION: main 
07-01 13:22:57.338: E/AndroidRuntime(1488): java.lang.RuntimeException: Unable to start 
    activity ComponentInfo{com.XXX/com.XXX.ui.MainIWrapper}: 

android.view.InflateException: Binary XML file line #43: Error inflating class 
com.XXX.ui.NavigationBar 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.ActivityThread.access$1500(ActivityThread.java:117) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.os.Looper.loop(Looper.java:130) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.ActivityThread.main(ActivityThread.java:3683) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
java.lang.reflect.Method.invokeNative(Native Method) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
java.lang.reflect.Method.invoke(Method.java:507) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
dalvik.system.NativeStart.main(Native 
Method) 
07-01 13:22:57.338: E/AndroidRuntime(1488): Caused by: android.view.InflateException: 
Binary 
XML file line #43: Error inflating class com.XXX.ui.NavigationBar 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.Activity.setContentView(Activity.java:1657) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
com.XXX.ui.MainIWrapper.onCreate(MainIWrapper.java:69) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  ... 11 more 
07-01 13:22:57.338: E/AndroidRuntime(1488): Caused by: java.lang.ClassNotFoundException: 
com.XXX.ui.NavigationBar in loader dalvik.system.PathClassLoader[/data/app/com.XXX- 
2.apk] 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.createView(LayoutInflater.java:471) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  at 
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
07-01 13:22:57.338: E/AndroidRuntime(1488):  ... 23 more 

Это функция, которая имеет дело с целью:

private Activity from; 
private Class to; 

public void open() { 
    Intent intent; 
    intent = new Intent(from, to); 

    if (extras != null) { 
     intent.putExtras(extras); 
    } 

    if (to.equals(MainWrapper.class)) { 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    } 

    if (activityForResultRequestCode == -1) { 
     from.startActivity(intent); 
    } else { 
     from.startActivityForResult(intent, activityForResultRequestCode); 
    } 

    if (pendingAnimation != null && pendingAnimation.length == 2) { 
     from.overridePendingTransition(pendingAnimation[0], pendingAnimation[1]); 
    } else { 
     from.overridePendingTransition(R.anim.slide_in_right, R.anim.hold); 
    } 

    if (toClosePreviousActivity) { 
     from.finish(); 
    } 
} 

Это вызов из своей деятельности (что должно быть изменено) , с классом, который я хочу загрузить (он использует функцию open(), которая выполняет намерение):

UiUtils.getOpenActivityBuilder(SplashScreen.this,MainIWrapper.class).toClosePrev(true).open;

Это часть моего манифеста - это основной вид деятельности, который должен быть изменен на класс MainIWrapper:

<activity 
    android:name=".ui.SplashScreen" 
    android:configChanges="orientation" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.NoTitleBar" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Это объявление mainWrapper в файле манифеста:

<activity 
    android:name=".ui.MainIWrapper" 
    android:configChanges="orientation" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.NoTitleBar" /> 

Это mainWrapper декларация:

public class MainIWrapper extends BaseWebSiteScreen implements HasBox {...} 

И это основная декларация деятельности:

public class SplashScreen extends Activity {...} 

Спасибо за помощь, но я до сих пор не могу найти проблему (я действительно новичок в андроиде)

Таково строки из моего XML (из строки 43):

<com.XXX.ui.NavigationBar 
     xmlns:vwpgind="http://schemas.android.com/apk/res/com.XXX" 
     android:id="@+id/navigation_bar" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="top" 
     vwpgind:arrowImageSrc="@drawable/common_slider_arrow" 
     vwpgind:hideFirstItem="true" /> 

код из MainIWrapper.OnCreate() является:

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main_iwrapper); 

isUserLoggedIn = UserDetails.getInstance(getApplicationContext()).isUserLoggedIn(); 

//we want to refresh user thumb each time user opens Main iWrapper 
if (UserDetails.getInstance(getApplicationContext()).isUserLoggedIn()) 
UserDetails.deleteCachedUserThumb(getApplicationContext()); 

textBox = (TextBox) findViewById(R.id.text_box); 
viewPager = (ViewPager) findViewById(R.id.view_pager); 

pageViewAdapter = new PageViewAdapter(); 
viewPager.setAdapter(pageViewAdapter); 

viewPager.setOffscreenPageLimit(NUMBER_OF_PAGES_TO_PRELOAD); 

navigationBar = (NavigationBar) findViewById(R.id.navigation_bar); 
topBar = (TopBar) findViewById(R.id.top_bar); 
progressAnimation = (ImageView) findViewById(R.id.progress_animation); 
bottomBar = (BottomBar) findViewById(R.id.bottom_bar); 

} 

Я до сих пор не могу найти здесь ошибку. Я посмотрел на пути сборки и папку Src с пакетом com.XXX.ui в нем (этот пакет содержит и Панель навигации классы ViewPager)


Те строки из моего XML (из строки 43) :

<com.XXX.ui.NavigationBar 
      xmlns:vwpgind="http://schemas.android.com/apk/res/com.XXX" 
      android:id="@+id/navigation_bar" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="top" 
      vwpgind:arrowImageSrc="@drawable/common_slider_arrow" 
      vwpgind:hideFirstItem="true" /> 

Код от MainIWrapper.OnCreate() является:

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main_iwrapper); 

isUserLoggedIn = UserDetails.getInstance(getApplicationContext()).isUserLoggedIn(); 

//we want to refresh user thumb each time user opens Main iWrapper 
if (UserDetails.getInstance(getApplicationContext()).isUserLoggedIn()) 
    UserDetails.deleteCachedUserThumb(getApplicationContext()); 

textBox = (TextBox) findViewById(R.id.text_box); 
viewPager = (ViewPager) findViewById(R.id.view_pager); 

pageViewAdapter = new PageViewAdapter(); 
viewPager.setAdapter(pageViewAdapter); 

viewPager.setOffscreenPageLimit(NUMBER_OF_PAGES_TO_PRELOAD); 

navigationBar = (NavigationBar) findViewById(R.id.navigation_bar); 
topBar = (TopBar) findViewById(R.id.top_bar); 
progressAnimation = (ImageView) findViewById(R.id.progress_animation); 
bottomBar = (BottomBar) findViewById(R.id.bottom_bar); 

} 

Я до сих пор не могу увидеть, что проблема здесь

public class ViewPager extends android.support.v4.view.ViewPager { 

public ViewPager(Context context) { 
    super(context); 
} 

public ViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public Parcelable onSaveInstanceState() { 
    try { 
     return super.onSaveInstanceState(); 
    } catch (Exception e) { 
     return null; 
    } 
} 

ответ

0

Ошибки все здесь:

07-01 13:22:57.098: E/dalvikvm(1488): Could not find class 'com.XXX.ui.ViewPager', referenced from method com.XXX.ui.MainIWrapper.onCreate android.view.InflateException: Binary XML file line #43: Error inflating class com.XXX.ui.NavigationBar

Сообщение код с вашего MainIWrapper .onCreate() и посмотрите строку 43 в вашем XML для NavigationBar.

+0

Привет, спасибо большое за помощь Но я до сих пор не могу найти проблему (я действительно новичок в андроиде) Это строки из моего XML (из строки 43): – Nativ

+0

я сделал отправил его в мой вопрос выше – Nativ

+0

Извините, я не понимаю, что вы делаете с xmlns: и тегами vwpgnd: в определении XML NavigationBar. Что вы здесь делаете? У вас есть класс com.XXX.ui.ViewPager? Отправьте код для ViewPager. –

2

Компилятор не проверяет, существуют ли классы, на которые имеются ссылки в XML-файлах макета, поэтому нормально выполнять ошибки только во время выполнения.

Скорее всего ком. XXX.ui.NavigationBar класс не существует на вашем пути к классу. Проверьте имена пакетов, возможно, это просто опечатка, или, может быть, вы забыли изменить имена пакетов в XML-файле после рефакторе имени пакета в классе NavigationBar.