android - 在TabbedView中隐藏RelativeLayouts(Action Bar Spinner)

时间:2015-11-14 19:20:09

标签: android android-layout

我正在使用tabviews构建一个应用程序,我正在使用不同的RelativeLayouts(android.widget.RelativeLayout)以及尝试隐藏那些未被视图使用的选项卡。 这是源代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_categories, container, false);

        if (getArguments().getInt(ARG_SECTION_NUMBER) == 1) {
            if (PREVIOUS_PAGE == 2) {
                cat2.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 3) {
                cat3.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 4) {
                cat4.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 5) {
                cat5.setVisibility(View.INVISIBLE);
            }

            PREVIOUS_PAGE = getArguments().getInt(ARG_SECTION_NUMBER);
            cat1.setVisibility(View.VISIBLE);
        } else if (getArguments().getInt(ARG_SECTION_NUMBER) == 2) {
            if (PREVIOUS_PAGE == 1) {
                cat1.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 3) {
                cat3.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 4) {
                cat4.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 5) {
                cat5.setVisibility(View.INVISIBLE);
            }

            PREVIOUS_PAGE = getArguments().getInt(ARG_SECTION_NUMBER);
            cat2.setVisibility(View.VISIBLE);
        } else if (getArguments().getInt(ARG_SECTION_NUMBER) == 3) {
            if (PREVIOUS_PAGE == 1) {
                cat1.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 2) {
                cat2.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 4) {
                cat4.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 5) {
                cat5.setVisibility(View.INVISIBLE);
            }

            PREVIOUS_PAGE = getArguments().getInt(ARG_SECTION_NUMBER);
            cat3.setVisibility(View.VISIBLE);
        } else if (getArguments().getInt(ARG_SECTION_NUMBER) == 4) {
            if (PREVIOUS_PAGE == 1) {
                cat1.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 2) {
                cat2.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 3) {
                cat3.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 5) {
                cat5.setVisibility(View.INVISIBLE);
            }

            PREVIOUS_PAGE = getArguments().getInt(ARG_SECTION_NUMBER);
            cat4.setVisibility(View.VISIBLE);
        } else if (getArguments().getInt(ARG_SECTION_NUMBER) == 5) {
            if (PREVIOUS_PAGE == 1) {
                cat1.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 2) {
                cat2.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 3) {
                cat3.setVisibility(View.INVISIBLE);
            } else if (PREVIOUS_PAGE == 4) {
                cat4.setVisibility(View.INVISIBLE);
            }

            PREVIOUS_PAGE = getArguments().getInt(ARG_SECTION_NUMBER);
            cat5.setVisibility(View.VISIBLE);
        } else {
            TextView textView = (TextView) rootView.findViewById(R.id.section_label);
            textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
        }

        return rootView;
    }

我的问题是它不会隐藏不必要的视图/ RelativeLayouts,因为我正在运行测试,因为setVisibility(int)指的是Android Studio的未知视图。 为了证明错误,这里是堆栈跟踪:

11-14 19:05:44.350 19979-19979/ E/AndroidRuntime: FATAL EXCEPTION: main
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime: Process: fopp.com.figures, PID: 19979
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{.Categories}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.setVisibility(int)' on a null object reference
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:144)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5221)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.setVisibility(int)' on a null object reference
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at fopp.com.popfigures.Categories.onCreate(Categories.java:64)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5937)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5221) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
11-14 19:05:44.350 19979-19979/ E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

0 个答案:

没有答案