Android 为什么还没有添加listfragment
我有一个列表片段,在它的布局中包含一个文本视图和列表(idAndroid 为什么还没有添加listfragment,android,android-fragments,android-listfragment,android-lifecycle,android-actionbar-compat,Android,Android Fragments,Android Listfragment,Android Lifecycle,Android Actionbar Compat,我有一个列表片段,在它的布局中包含一个文本视图和列表(id@android:id/list)。在oncreateofactivity中,我将片段添加到容器中 @Override protected void onCreate(Bundle savedInstanceState) { // Log.e(TAG, "Inside OnCreate"); super.onCreate(savedInstanceState); showPdIndeterminate();
@android:id/list
)。在oncreateofactivity中,我将片段添加到容器中
@Override
protected void onCreate(Bundle savedInstanceState) {
// Log.e(TAG, "Inside OnCreate");
super.onCreate(savedInstanceState);
showPdIndeterminate();
... /* registering some receivers */ ...
mInstance = this;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
setContentView(R.layout.activity_main);
myListFragment = getSupportFragmentManager().findFragmentById(
R.id.container);
if (myListFragment == null) {
Log.e(TAG,"Creating new MyListFragment");
myList = new MyListFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.container, myList).commit();
}
在MyListFragments'onActivityCreated
中,我调用了一个函数来保存布局中的文本视图
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().sendBroadcast(new Intent(MainActivity.LIST_INIT));
selfInterface.onTimeToChangeTitle("Fuzzy Logic Details");
}
功能是
@Override
public void onTimeToChangeTitle(String title) {
if (myListFragment != null) {
// Log.e(TAG, "Inside onTimeToChangeTitle");
if (myListFragment.isAdded()) {
Log.e(TAG, "MyListFragment added");
} else {
Log.e(TAG, "MyListFragment yet to be added");
getSupportFragmentManager().beginTransaction().attach(myListFragment).commit();
}
}else{
Log.e(TAG, "MyListFragment itself null");
}
TextView t = (TextView) findViewById(R.id.listTitle);
if (t != null)
t.setText(title);
else
Log.e(TAG, "onTimeToChangeTitle: textview null");
}
在方向更改后,我看到日志为尚未添加的MyListFragment,因此我尝试了getSupportFragmentManager().beginTransaction().attach(MyListFragment.commit()代码>但此无法在此处执行此操作。。。例外情况
我的问题是,由于片段尚未添加,标题没有更改,而且在本例中,如果我尝试getListView()
,这会引发列表内容不可用异常
如何确保列表的视图可用并已添加,以便成功更改其内容
注1:我看到MyListFragment还有待添加
,也可以在按backpress后按launcher图标重新启动应用程序
注意2:我已将setretinstate(true)
设置为片段。您的myListFragment将不再为空。因此,添加片段的代码将不会被执行。@Sripathi,如果myListFragment不再为空
那么为什么我在尝试getListView()
时出错,您只需调试并跟踪代码流。我强烈希望您添加片段的代码不会被执行,因为您在myListFragment中有R.id.container的引用(它不应该为null)。myListFragment=getSupportFragmentManager().findFragmentById(R.id.container);检查并让我知道。@Sripathi,我将调试并更新,在此之前,我对添加片段的代码的怀疑将不会执行,因为您在myListFragment中有R.id.container的引用(不应为null)
是,我的代码执行它。您的意思是如果(myListFragment==null)条件为真?您的日志中是否有“创建新的MyListFragment”?