2 eiseno Eiseno 于 2013.01.24 13:47 提问

从fragment在父activity中我怎么能够访问UI elements

父activity布局

<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>

在父activity的onCreate方法中的fragment

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;
    }

但是我得到了一个空指针异常

2个回答

cytown
cytown   2013.01.24 14:59
已采纳

这样:
fragment里面:

onAttach(Activity activity) {
    ProgressBar progressBar = (ProgressBar) activity.findViewById(R.id.ctrlActivityIndicator);
    progressBar.setVisibility(View.INVISIBLE);
}
Sueyexin
Sueyexin   2013.01.24 17:01

既然你想要activity's views,你可以这样:

ProgressBar progressBar = (ProgressBar) getActivity().findViewById(R.id.ctrlActivityIndicator);

调用getActivity()来获得activity instance,然后你用findViewById()(如果R.id.ctrlActivityIndicator是activity布局的一部分,你无法得到NPEs)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android从fragment在父activity中怎么能够访问UI elements
 父activity布局 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 RelativeLayout xmlns:android="http://schemas.
Activity和Fragment的几种交互方式(Activity可以改变Fragment的UI,Fragment也可以改变ActivityUI)
Activity和Fragment的四种交互方式(Activity可以改变Fragment的UI,Fragment也可以改变ActivityUI)
Activity和Fragment相互通信或者改变UI
Activity和Fragment相互通信,或者改变UI
Activity如何改变Fragment的UI
在Activity如何改变Fragment的UI,如按返回键改变fragment里面textview的内容
安卓fragment跳转activity,fragment跳转fragment,activity跳转fragment
Activity中加载不同的fragment  / Fragment中加载不同的fragment 主Activity中加载(切换)多个fragment(也可以理解为activity跳转fragment)或主fragment中加载(切换)多个fragment  Activity布局中要有一个fragment布局空间,比如id名为main_ FrameLayout写两个fragment类继承自frag
Activity更新Fragment
Activity更新Fragment  (TabLayout ViewPager Fragment) 在activity里调用 adapter.notifyDataSetChanged(); 适配器的写法: 方法1:(适配器继承FragmentStatePagerAdapter) public class CoursePagerAdapter extends Fragmen
Fragment向activity中传值
Fragment向activity中传值 1.在Fragment中写一个回调接口   2.在activity中实现这个回调接口 3,在Fragment中onAttach 方法中得到activity中实现好的 实例化接口对象 4,用接口的对象  进行传值 代码: MainActivity: package com.qianfeng.fragmenttoa
activity嵌套fragment,fragment内嵌fragment之间传值切换fragment
至于fragment的用法,fragment+viewpager的滑动切换代码请参考博文 Android基础:翻页控件Viewpager的使用方法,viewpager+fragment混合使用 fragment与Activity 当在使用activity嵌套fragment,fragment再嵌套子fragment时,相当于有两层fragment,假设最外层为第一层,其中
Activity与Fragment数据传递之Fragment从Activity获取数据
整理Fragment与Activity之间的数据交换,大体上包括三种: 1、Fragment从Activity获取数据 2、Activity从Fragment获取数据 3、Fragment之间获取数据 通常,如果Activity向不同的Activity传递数据,最常用的是通过Intent.putExtra()方法,将简单类型的数据或可序列化的数据保存在Intent对象中,然后在目标Ac
子fragment获取父activity中的数值
写这个博客的缘由是一个同学问我一个问题activityA传递数据到activityB,然后activityB中的fragment想获取这个数据咋办,其实我之前碰到过类似的使用场景,时间比较久远,想着还是归纳一下。