片段事务不将我的片段识别为片段

时间:2014-08-12 15:30:20

标签: java android

所以我正在实现FragmentActivity并尝试添加片段,但是我遇到了多个问题。我以前做过这个,实际上我使用的代码与上一个项目(它工作的地方)相同,但由于某些原因它在这里不起作用。这是我的代码:

package silversphere.eyeon;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.LinearLayout;

public class AlarmsActivity extends FragmentActivity {



    @Override
    public void onCreate(Bundle savedInstanceState)
    {
         super.onCreate(savedInstanceState);

         LinearLayout layout = new LinearLayout(this);
         layout.setId(40000);

         FragmentManager man = getFragmentManager();
         FragmentTransaction trans = man.beginTransaction();

         Alarm_Landing_Page_Fragment frag = new Alarm_Landing_Page_Fragment();

         trans.add(40000, frag);

    }

}

我在layout.setId()调用和trans.add()上遇到错误。 layout.setId()表示“类型为id的预期资源”,并且事务正在说“无法解析方法add(int,silversphere.eyeon.alarm_landing_page_fragment)”,这对我来说表明由于某种原因它没有将Alarm_LandingPage_Fragment识别为一个片段,但绝对应该。这是Alarm_Landing_Page_Fragment的声明:

public class Alarm_Landing_Page_Fragment extends Fragment {

任何建议都表示赞赏!

2 个答案:

答案 0 :(得分:2)

您正在将支持库中的Fragment相关类与SDK附带的类混合。使用Fragments时,只使用支持库类或仅使用SDK的内置类(我只是指与Fragment相关的类)。

如果您的班级Alarm_Landing_Page_Fragment从支持库扩展Fragment,请更改:

import android.app.FragmentManager;
import android.app.FragmentTransaction;

// ...

FragmentManager man = getFragmentManager();

为:

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

// ...

FragmentManager man = getSupportFragmentManager();

否则,请不要扩展FragmentActivity并仅使用SDK中与Fragment相关的类。

修改:

另见这个答案: Error inflating class fragment (As ListFragment)

答案 1 :(得分:1)

问题与setId有关。您必须创建<id>资源:

<强> /res/values/ids.xml

<resources>
    <item type="id" name="myId" />
</resources>

然后,在你的文件上:

LinearLayout layout = new LinearLayout(this);
layout.setId(R.id.myId);

...

trans.add(R.id.myId, frag);