2013-02-25 72 views
2

我有一个Android活动与滑动导航(用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"); 
} 

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

+0

有可能这样做吗? if(v!= null && v.findViewById(R.id.textView1)!= null) ((TextView)v.findViewById(R.id.textView1))。setText(“new text”); – 2013-02-25 16:26:32

回答

4

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

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