测试布局是否“膨胀”

时间:2013-02-25 16:23:09

标签: android android-layout swipe

我有一个带有滑动导航功能的Android Activity(使用ViewPager实现)。

public class UberActivity extends FragmentActivity {

ViewPager mViewPager;

protected void onCreate(Bundle savedInstanceState) {
        //... some stuff

        myfragment1=new MyFragment1();
        myfragment2=new MyFragment2();
        myfragment3=new MyFragment3();
        myfragment4=new MyFragment4();
    }

public void onChoiceSelected(){
    mViewPager.post(new Runnable(){public void run(){
        myfragmen1.update();
        myfragmen2.update();
        myfragmen3.update();
        myfragmen4.update();
    }});
}
}

public class Fragment4 extends Fragment {
View v;
@Override
public View onCreateView(LayoutInflater layoutInflater, ViewGroup container,
        Bundle savedInstanceState) {
        v=layoutInflater.inflate(R.layout.mylayout,container,false);
        return v;
}         
public void update(){
    ((TextView)v.findViewById(R.id.textView1)).setText("new text");
}

我会在update()上得到一个NullPointerException,除非我事先刷到它(以便在调用update()之前它的布局实际上是膨胀的)。 这里的问题是Fragment4是实例化的,但是没有调用它的OnCreateView()。我该如何检查OnCreateView()是否被调用?我可以在那里放一个布尔值,但我认为这不是最好的做法......

1 个答案:

答案 0 :(得分:4)

只需在'v'周围添加一个if语句,检查它是否为null。

public void update(){
    if (v != null) {
        ((TextView)v.findViewById(R.id.textView1)).setText("new text");
    }
}