Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段能否扩展片段活动?[安卓]_Android_Android Fragments_Android Activity_Android Fragmentactivity - Fatal编程技术网

Android 片段能否扩展片段活动?[安卓]

Android 片段能否扩展片段活动?[安卓],android,android-fragments,android-activity,android-fragmentactivity,Android,Android Fragments,Android Activity,Android Fragmentactivity,我已经创建了一个MainActivity,它由3个可滚动的选项卡组成(通过使用ViewPager)。现在,这3个选项卡中的每一个都是一个片段。此外,我正在使用ActionBarSherlock(ABS) 对于第一个片段,我创建了以下类: public class Fragment_1 extends SherlockFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup co

我已经创建了一个MainActivity,它由3个可滚动的选项卡组成(通过使用ViewPager)。现在,这3个选项卡中的每一个都是一个片段。此外,我正在使用ActionBarSherlock(ABS)

对于第一个片段,我创建了以下类:

public class Fragment_1 extends SherlockFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = inflater.inflate(R.layout.fragment1, container, false);
        return v;
        /* R.layout.fragment1 only contains a TextView. */
    }
}
对于第二个片段,我想扩展FragmentActivity,如下所示

public class Fragment_2 extends FragmentActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment2);
        }
}
第三个片段与第一个片段相同

但当我启动应用程序时,它崩溃了。那么,我为类Fragment_2扩展FragmentActivity是不是错了?将FragmentActivity甚至Activity扩展到片段类是非法的吗?如果没有,这里的问题是什么

谢谢


编辑:在@commonware的回答之后,我更新了我的类,如下所示:

public class Fragment_2 extends SherlockFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Button send = (Button) findViewById(R.id.bSend); //Error at this line
            //some error free code
            FragmentTransaction t = getSupportFragmentManager().beginTransaction(); //Error at this line
        }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View v = inflater.inflate(R.layout.fragment2, container, false);
    return v;
}
我的最后两个问题是:

  • 如何访问Fragment_2类中的R.id.bSend按钮
  • Eclipse建议将getSupportFragmentManager()更改为getFragmentManager()。这个零钱行吗
  • 谢谢

    将FragmentActivity甚至Activity扩展到片段类是非法的吗

    Fragment
    是一个Java类。片段实现(用作
    ViewPager
    中的页面)必须直接或间接地从
    片段继承

    活动
    不继承自
    片段
    <代码>片段活动
    不继承自
    片段
    。因此,您不能从
    活动
    片段活动
    继承,也不能从
    片段
    继承

    将FragmentActivity甚至Activity扩展到片段类是非法的吗

    Fragment
    是一个Java类。片段实现(用作
    ViewPager
    中的页面)必须直接或间接地从
    片段继承


    活动
    不继承自
    片段
    <代码>片段活动
    不继承自
    片段
    。因此,您不能从
    活动
    片段活动
    继承,也不能从
    片段

    @BornAgain继承:您可以从
    片段
    继承
    片段。请注意,您从未解释过为什么要“扩展FragmentActivity”。问题是,在类Fragment_2中,我需要使用setContentView(),为此我需要扩展Activity或FragmentActivity。但这是不可能的。@BornAgain:“我需要使用setContentView()”--不,你不需要,因为这在
    片段中是不可能的。使用
    onCreateView()
    中的
    inflate()
    ,就像您在
    Fragment_1
    中所做的那样。非常感谢。这就解决了问题。但现在我又面临两个问题。如果你看看我更新的问题,我会很有帮助。@BornAgain:删除你的
    onCreate()
    方法。将
    按钮
    逻辑移动到
    onCreateView()
    ,在
    充气()
    之后,通过调用
    v
    上的
    findViewById()
    在充气的
    视图中查找
    按钮
    。我不知道你为什么要在片段中处理
    片段事务
    。@BornAgain:你可以让
    片段2
    片段
    继承。请注意,您从未解释过为什么要“扩展FragmentActivity”。问题是,在类Fragment_2中,我需要使用setContentView(),为此我需要扩展Activity或FragmentActivity。但这是不可能的。@BornAgain:“我需要使用setContentView()”--不,你不需要,因为这在
    片段中是不可能的。使用
    onCreateView()
    中的
    inflate()
    ,就像您在
    Fragment_1
    中所做的那样。非常感谢。这就解决了问题。但现在我又面临两个问题。如果你看看我更新的问题,我会很有帮助。@BornAgain:删除你的
    onCreate()
    方法。将
    按钮
    逻辑移动到
    onCreateView()
    ,在
    充气()
    之后,通过调用
    v
    上的
    findViewById()
    在充气的
    视图中查找
    按钮
    。我不知道你为什么要在片段中处理
    片段事务。