父活动布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LockerCodeActivity" >
<LinearLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:id="@+id/ctrlActivityIndicator"
android:indeterminateOnly="true"
android:keepScreenOn="false"
/>
<TextView
android:id="@+id/tv_results"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="" />
</RelativeLayout>
在父活动onCreate function
中为片段充气FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment scannerFragment = new ScanFragment();
fragmentTransaction.add(R.id.fragment_container, scannerFragment);
fragmentTransaction.commit();
到目前为止工作得很好......现在我该如何隐藏进度条? 这就是我试过的
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_scan, container, false);
ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.ctrlActivityIndicator);
progressBar.setVisibility(View.INVISIBLE);
return view;
}
我得到一个空指针异常
答案 0 :(得分:50)
由于您需要活动的视图,因此您需要执行此操作:
ProgressBar progressBar = (ProgressBar) getActivity().findViewById(R.id.ctrlActivityIndicator);
您调用getActivity()
获取活动实例,然后正常使用findViewById()
(前提是R.id.ctrlActivityIndicator
是活动布局的一部分,您将无法获得NPE)。
答案 1 :(得分:2)
这对我来说不起作用我将getActivity的结果转换为父活动。见以下链接: Call parent's activity from a fragment
答案 2 :(得分:0)
您可以使用:
((ParentActivity)getActivity()).UI_COMPONENT_NAME
访问父活动的ui组件。
UI_COMPONENT_NAME是在ParentActivity中初始化的组件的名称。