1

My ActivityA には、1 つのボタンを含む水平スライド メニューがあります。動作は次のとおりです。

1) onClick 中に、ユーザーがカテゴリ グループを選択できるように、startActivityForResult() を介して ActivityB を呼び出します。

2) 次に、別のアクティビティ ActivityC を呼び出して、ユーザーがサブカテゴリを選択できるようにします。

3) その後、ActivityA に戻ります。(ActivityB と ActivityC はどちらも、終了後に finish() を呼び出します。)

ActivityA に戻った直後にアプリがクラッシュし、Logcat で見たものを次に示します。それらのどれも私のコードを指していません。何か提案はありますか?

** そして、NullPointer が CustomHorizo​​ntalScrollView.onLayout() で発生することがわかりました。これは、スクロール メニューが再開後にフォーカスを失ったためですか? または、どの TargetFragment を表示する必要があるのか​​ 混乱していますか?? アプリが FC にならないように、onLayout() 内にその NullPointer の try-catch を入れてみました。スクロール メニューとメイン レイアウトは問題なく表示されます。しかし、検索結果だけは表示されませんでした。

アクティビティ 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)
4

1 に答える 1

0

この NullPointerException は、スライド メニューとは何の関係もないことが判明しました。これは、アダプターを null に設定してリスト データをクリーンアップしたためです。ご助力いただきありがとうございます。

于 2013-02-20T09:45:44.837 に答える