У меня эта ошибка времени выполнения почти на неделю и я не могу найти решение (я новый программист для 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;
}
}
Привет, спасибо большое за помощь Но я до сих пор не могу найти проблему (я действительно новичок в андроиде) Это строки из моего XML (из строки 43): – Nativ
я сделал отправил его в мой вопрос выше – Nativ
Извините, я не понимаю, что вы делаете с xmlns: и тегами vwpgnd: в определении XML NavigationBar. Что вы здесь делаете? У вас есть класс com.XXX.ui.ViewPager? Отправьте код для ViewPager. –