我正在使用來自StartApp的標題廣告,它給了我標題異常。
activity_main.xml中
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.PagerTabStrip
android:id="@+id/pager_tab_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
我有我使用填充PageTabStrip上述
fragment1_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="@dimen/layout_padding"
android:orientation="vertical" >
<ListView
android:id="@+id/list_fragment1"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" />
<com.startapp.android.publish.banner.Banner
android:id="@+id/startAppBanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</LinearLayout>
fragments2_layout.xml和fragment3_layout三個片段。 XML完全相同作爲fragment1_layout.xml
Fragment1.java
public class Fragment1 extends SherlockFragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment1_layout, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
//Initializing list_fragment1 in fragment1_layout.xml here
}
}
同樣地,我有Fragment2.java和Fragment3.java類
CollectionPagerAdapter.java
class CollectionPagerAdapter extends FragmentStatePagerAdapter
{
@Override
public Fragment getItem(int tabNumber)
{
Fragment fragment = null;
switch(tabNumber)
{
case 0: fragment = new Fragment1();
break;
case 1: fragment = new Fragment2();
break;
case 2: fragment = new Fragment3();
break;
}
return fragment;
}
@Override
public int getCount()
{
return activity.getResources().getInteger(R.integer.number_of_tabs);
}
@Override
public CharSequence getPageTitle(int position)
{
//Returning titles here
}
}
MainActivity.java
public class MainActivity extends SherlockFragmentActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//Has to be called before setContentView() method
StartAppAd.init(this, getString(R.string.my_startapp_developer_id), getString(R.string.my_apps_startapp_id));
startAppAd = new StartAppAd(this); //For Interstitial Ads
setContentView(R.layout.activity_main);
CollectionPagerAdapter collectionPagerAdapter = new CollectionPagerAdapter(this, getSupportFragmentManager());
}
@Override
public void onBackPressed()
{
startAppAd.onBackPressed();
super.onBackPressed();
Log.d(TAG, "onBackPressed");
}
@Override
protected void onResume()
{
super.onResume();
startAppAd.onResume(); //For Interstitial Ads
Log.d(TAG, "onResume");
}
@Override
protected void onPause()
{
super.onPause();
startAppAd.onPause(); //Makes the Interstitial Ads appear when the user press the 'Home' button on the device
Log.d(TAG, "onPause");
}
}
當我跑我的應用程序的新鮮即沒有以前保存的狀態。橫幅廣告顯示在那裏各自的PageTabStrip和一切運行良好。
考慮我在Fragement1 PageTabStripe,然後按「主頁」鍵(使應用程序保存其狀態)走出我的應用程序,然後回來給它在後一階段,運行一些其他的後應用程序(以便在我的應用程序的MainActivity中執行protected void onDestroy())。我的應用程序崩潰,下面的例外。我的應用程序崩潰,下面的例外。
同樣的事情發生在我在Fragment3 PageTabStrip時,按'Home'鍵退出我的應用程序並在稍後階段返回。 片段3 PageTabStrip得到正確恢復,但當我滑動到片段2 PageTabStrip,我的應用程序崩潰,但有以下例外。
類解組時未發現:
com.startapp.android.publish.banner.banner3d.Banner3D$SavedState
java.lang.ClassNotFoundException: com.startapp.android.publish.banner.banner3d.Banner3D$SavedState
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at java.lang.Class.forName(Class.java:216)
at android.os.Parcel.readParcelableCreator(Parcel.java:2129)
12-09 at android.os.Parcel.readParcelable(Parcel.java:2093)
at android.os.Parcel.readValue(Parcel.java:2009)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2356)
at android.os.Parcel.readSparseArray(Parcel.java:1731)
at android.os.Parcel.readValue(Parcel.java:2066)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2310)
at android.os.Bundle.unparcel(Bundle.java:231)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1255)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:861)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:244)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:531)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5095)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com/startapp/android/publish/banner/banner3d/Banner3D$SavedState
... 34 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.startapp.android.publish.banner.banner3d.Banner3D$SavedState" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
... 34 more