在我的应用中,当片段可见时,我尝试更改LinearLayout的背景颜色。当我不使用setContentView()
更改布局时,此工作正常。我希望在发生某事时显示ListView,所以我用setContentView()
显示,在选择项目之后我使用setContentView()
将布局设置回主布局但由于某种原因,fragment.isVisible返回假。这是代码:
private void setFeedback(int color) {
Log.d(TAG, "set background color to:" + color + " mmainfragment is " + mMainFragment + mMainFragment.isAdded() + mMainFragment.isHidden() + mMainFragment.isVisible());
if (mMainFragment != null && mMainFragment.isVisible()) {
Log.d(TAG, "****COLOR ON THE SCREEN");
mMainFragment.mLayout.setBackgroundColor(color);
mFeedbackTask = new FeedbackTask();
mFeedbackTask.execute();
}
}
它在开始时记录以下内容:
将背景颜色设置为:-3407872 mmainfragment is MainFragment {41c30588#0 id = 0x7f07003c} true false true
然后我将setContentView用于ListView,如下所示:
setContentView(R.layout.feedback_popup);
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.feedback_list, feedback.getOptions());
ListView listView = (ListView) findViewById(R.id.feedback_screen);
listView.setAdapter(adapter);
回到主视图如下:
setContentView(R.layout.overview);
然后,当我再次尝试时,记录下来:
将背景颜色设置为:-3407872 mmainfragment is MainFragment {41c30588#0 id = 0x7f07003c} true false false
如果isAdded()和isHidden()分别返回true和false,为什么它不可见?
答案 0 :(得分:0)
由于某种原因,setContentView不能按我希望的方式工作,使用片段修复它。