我有一個活動,通過ViewPagerAdapter管理四個片段。 從我的活動,我想調用一個方法:從活動中調用片段中的非靜態方法?
public void openButtons(){
//mPosition is a position of pager
if (mPosition==0){
Fragment1 fragment = (Fragment1) getSupportFragmentManager().findFragmentById(R.id.fragment1);
fragment.openButtons();
}
if (mPosition==1){
Fragment2 fragment = (Fragment2) getSupportFragmentManager().findFragmentById(R.id.fragment2);
fragment.openButtons();
}
if (mPosition==2){
....
}
if (mPosition==3){
...
}
}
如果我的片段的方法定義爲非靜態:
public void openButtons(){//some stuff}
我得到一個fragment.openButtons空指針()行無論這個位置和片段如何。
如果該方法聲明爲靜態,那沒關係。
public static void openButtons(){//some stuff}
該方法的內容沒有問題,因爲問題與空方法相同。
所以我的問題是爲什麼我們必須在片段中定義靜態方法?
「因爲在這樣的條件:
public void openButtons(){
//mPosition is a position of pager
if (mPosition==0){
Fragment1.openButtons()
}
if (mPosition==1){
Fragment2.openButtons()
}
if (mPosition==2){
....
}
if (mPosition==3){
...
}
}
同樣的功能!
謝謝。
你爲什麼不做一個特定片段的靜態對象引用?並與該obj你設法調用片段中的任何方法。不需要定義靜態方法。 – user3819810
請參閱[此鏈接](http://stackoverflow.com/questions/10903077/calling-a-fragment-method-from-a-parent-activity)可能會幫助你。 – Pankaj
'getSupportFragmentManager()。findFragmentById(R.id.fragment1);'return null? – Altoyyr