問題:很少的代碼示例並沒有幫助我獲得對片段的引用。它總是返回null。獲取對片段的引用
我做了什麼:我有一個包含片段的活動。該片段進行聯網。如果它已完成加載,我會在父級活動中調用onNetworkingFinished
方法。
在onNetworkingFinished
方法的內部,我需要獲取對片段的引用以獲得調用片段方法的可能性。
的片段是肯定不爲空,因爲onNetworkingFinished方法得到由它叫...
public class MainActivity extends AppCompatActivity implements MaschineFragment.Callbacks{
private Toolbar toolbar;
private FloatingActionButton mFab;
private CoordinatorLayout mCordinatorLayout;
private MaschineFragment mMaschineFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar_main);
setSupportActionBar(toolbar);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.maschinelistcontainer, new MaschineFragment(), "maschinefragment");
if(getResources().getBoolean(R.bool.dual_pane)){
ft.add(R.id.detailreviewcontainer, new ReviewMaschineFragment(), "detailfragment");
}
ft.commit();
mCordinatorLayout = (CoordinatorLayout) findViewById(R.id.maschineCoordinatorLayout);
mFab = (FloatingActionButton) findViewById(R.id.fab_download_maschinen);
mFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public void onNetworkingFinished(boolean finishedWithError) {
if(finishedWithError){
Log.i("Networking", "Daten NUR lokal geladen");
Snackbar snackbar = Snackbar
.make(mCordinatorLayout, getResources().getString(R.string.networking_finished_with_error), Snackbar.LENGTH_LONG);
snackbar.show();
} else {
Log.i("Networking", "Fertig geladen");
Snackbar snackbar = Snackbar
.make(mCordinatorLayout, getResources().getString(R.string.networking_finished_with_error), Snackbar.LENGTH_LONG);
snackbar.show();
}
mMaschineFragment = (MaschineFragment) getSupportFragmentManager().findFragmentById(R.id.maschine_fragment);
if (mMaschineFragment==null || ! mMaschineFragment.isInLayout()) {
Log.i("Maschine Fragment", "NULL und nicht im Layout");
}
else {
Log.i("Maschine Fragment", "VORHANDEN");
}
}
(...)
}
您應該使用接口片段和活動 –
我看你附上標籤,以每次使用片段之間的通信,爲什麼不嘗試'findFragmentByTag'? –
您應該搜索標記「maschinefragment」而不是ID。你傳入的ID是視圖ID,而不是Fragment ID(是的,它很混亂)。 – DeeV