setContentView片段不可见

时间:2018-03-06 14:56:51

标签: android listview android-fragments

在我的应用中,当片段可见时,我尝试更改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,为什么它不可见?

1 个答案:

答案 0 :(得分:0)

由于某种原因,setContentView不能按我希望的方式工作,使用片段修复它。