2 nana4ever nana4ever 于 2012.12.26 11:40 提问

Fragment不能为ID找到视图

我想在view中添加一个fragment。

FragmentManager fragMgr=getSupportFragmentManager();
    feed_parser_activity content=
        (feed_parser_activity)fragMgr.findFragmentById(R.id.feedContentContainer);
    FragmentTransaction xaction=fragMgr.beginTransaction();

    if (content==null || content.isRemoving()) {
        content=new feed_parser_activity(item.getLink().toString());

        xaction
            .add(R.id.feedContentContainer, content)
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
            .addToBackStack(null)
            .commit();
        Log.e("Abstract", "DONE");
    }

当上面这段代码执行后,在 debug中显示错误:

12-25 19:45:19.040: ERROR/AndroidRuntime(2835): java.lang.IllegalArgumentException: No view found for id 0x7f080011 for fragment feed_parser_activity{41882f50 #2 id=0x7f080011}

feed_parser_activity是一个 Fragment,在xml中设置 Fragment 布局。

我用FragmentActivity来控制拥有feed_parser_layout布局的Fragment Layout。
以上的设置为什不正确呢?

3个回答

curie_87
curie_87   2012.12.26 13:42
已采纳

setContentView()中指定了错误的布局,setContentView()FragmentActivity的onCreate()方法中。id传递到FragmentTransaction.add(),在你的例子中R.id.feedContentContainer必须是setContentView()中指定的布局的子类。所以就不用onCreate()方法。

wangshiming88
wangshiming88   2014.06.12 17:21

转:我用的是Fragment嵌套Fragment做的,放fragment切换快的时候程序就会崩溃,解决这个办法就是在View生成前先将FragemnentManger创建好,就不会报错了
测试了 确实很有效果

CSDN_Ask
CSDN_Ask   2013.01.08 14:12
@Override
protected void onResume()
{
    super.onResume();

    fragManager = getSupportFragmentManager();

    Fragment answerPad=getDefaultAnswerPad();
    setAnswerPad(answerPad);
    setContentView(R.layout.abstract_test_view);
}
protected void setAnswerPad(AbstractAnswerFragment pad)
{
    fragManager.beginTransaction()
        .add(R.id.AnswerArea, pad, "AnswerArea")
        .commit();
    fragManager.executePendingTransactions();
}

注意:在setContentView之前建立 fragments。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!