我正在使用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)