2013-02-08 57 views
1

我ActivityA具有包含一個按鈕,一個水平滑動菜單。 這是行爲:水平滑動菜單調用活動引起NullPointerException異常恢復後

1)在onClick期間,它將通過startActivityForResult()調用ActivityB以供用戶選擇一個類別組。

2)然後,它會調用另一個活動,ActivityC爲用戶選擇一個子類別。

3)在此之後,它會返回到ActivityA。 (無論ActivityB和ActivityC通話結束(),他們這樣做了。)

權的簡歷ActivityA後,該應用程序是死機了,這裏就是我在logcat中看到的。他們都沒有指向我的代碼。任何建議嗎?

**而且,我剛剛發現NullPointer發生在CustomHorizo​​ntalScrollView.onLayout() 那是因爲滾動菜單失去焦點後恢復?或者,它與顯示哪個TargetFragment混淆?我嘗試了在onLayout()裏放入NullPointer的try-catch,這樣我的應用就不會FC了。滾動菜單和主佈局顯示得很好。但只有搜索結果沒有顯示。

活動A:源代碼

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LayoutInflater inflater = LayoutInflater.from(this); 
    scrollView = (CustomHorizontalScrollView) inflater.inflate(R.layout.slide_menu, null); 
    setContentView(scrollView); 

    menu = inflater.inflate(R.layout.horz_scroll_menu, null); 
    app = inflater.inflate(R.layout.main_list, null); 

    btnSlide = (ImageView) app.findViewById(R.id.ib_slide_menu); 
    btnSlide.setOnClickListener(new ClickListenerForScrolling(scrollView, menu));  

    fAdsSearch = (AdsSearchFragment)getSupportFragmentManager().findFragmentById(R.id.f_search); 
    fActionbar = (ActionBarFragment) getSupportFragmentManager().findFragmentById(R.id.f_actionbar); 
    fAdsSearch.setTargetFragment(getSupportFragmentManager().findFragmentById(R.id.f_main), 0); 
scrollView.initViews(new View[] {menu, app}, 1, new SizeCallbackForMenu(btnSlide)); 
} 

slide_menu.xml:源代碼

<?xml version="1.0" encoding="utf-8"?> 
<CustomHorizontalScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#00ffffff" 
android:padding="0px" 
android:layout_margin="0px" 
android:fadingEdge="none" 
android:fadingEdgeLength="0px" 
android:scrollbars="none"> 
<LinearLayout 
    android:id="@+id/top" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    android:background="#ffffffff" 
    android:padding="0px" 
    android:layout_margin="0px"> 
</LinearLayout> 
</CustomHorizontalScrollView> 

horz_scroll_menu.xml:源代碼

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<fragment 
    android:id="@+id/f_filter_menu" 
    android:name="MenuFragment" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
</fragment> 
</LinearLayout> 

main_list.xml:源代碼

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<fragment 
    android:id="@+id/f_actionbar" 
    android:name="ActionBarFragment" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
<fragment 
    android:id="@+id/f_search" 
    android:name="SearchFragment" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
<fragment 
    android:id="@+id/f_main" 
    android:name="MainFragment" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
</LinearLayout> 

logcat的錯誤:

02-08 15:57:12.959: E/AndroidRuntime(19322): FATAL EXCEPTION: main 
02-08 15:57:12.959: E/AndroidRuntime(19322): java.lang.NullPointerException 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.Spinner.makeAndAddView(Spinner.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.Spinner.layout(Spinner.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.Spinner.onLayout(Spinner.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.setChildFrame(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.onLayout(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.setChildFrame(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.layoutVertical(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.onLayout(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.FrameLayout.onLayout(FrameLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.setChildFrame(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.layoutVertical(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.onLayout(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.setChildFrame(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.onLayout(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.FrameLayout.onLayout(FrameLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.HorizontalScrollView.onLayout(HorizontalScrollView.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.FrameLayout.onLayout(FrameLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.setChildFrame(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.layoutVertical(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.LinearLayout.onLayout(LinearLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.widget.FrameLayout.onLayout(FrameLayout.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.View.layout(View.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewGroup.layout(ViewGroup.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.os.Handler.dispatchMessage(Handler.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.os.Looper.loop(Looper.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at android.app.ActivityThread.main(ActivityThread.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at java.lang.reflect.Method.invokeNative(Native Method) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at java.lang.reflect.Method.invoke(Method.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
02-08 15:57:12.959: E/AndroidRuntime(19322): at dalvik.system.NativeStart.main(Native Method) 
+0

請附上您的代碼。 – NaviRamyle

+0

打印您的活動代碼。 – Maulik

回答

0

它原來是這個NullPointerException異常無關與滑動菜單。這是因爲我通過將適配器設置爲null來清理列表數據。感謝你的幫助。