使用片段时遇到问题

时间:2014-06-13 14:31:39

标签: android android-fragments

我必须创建一个我必须使用Fragment的应用程序。 在MainActivity中,有一个webView。来自SecondActivity我 已经开始使用Fragment。

以下是SecondActivity的代码:

package com.dev.testapp;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;

public class Second extends Activity {


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);


    }

    public void choosefragment(View view) {

      Fragment fg;

        if(view == findViewById(R.id.secondbtn2)) {

            fg = new SecondFragment();
        }

        else
        {
            fg = new FirstFragment();
        }

        FragmentManager fm = getFragmentManager();
        FragmentTransaction fragmentTransaction = fm.beginTransaction();
        fragmentTransaction.replace(R.id.frag1, fg);
        fragmentTransaction.commit();
    }

}

second.xml 文件:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#ffffff" >

   <Button
     android:id="@+id/secondbtn1"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="first fragment"
     android:onClick="chooseFragment" />

   <Button
     android:id="@+id/secondbtn2"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="second fragment" 
     android:onClick="chooseFragment"/> 

   <fragment 
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:name="com.dev.testapp.fragment1"
       android:id="@+id/frag1"
       />
 </LinearLayout>

之后我根据需要为Fragments创建了两个类 FirstFragment的代码:

    package com.dev.testapp;

    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    public class FirstFragment extends Fragment{


        public View onCreate(LayoutInflater inflater, 
                ViewGroup container , Bundle savedInstanceState) {

             //Inflate the layout for this fragment

            return inflater.inflate(R.layout.fragment1,container, false);

        }

    }

这是SecondFragment:

    package com.dev.testapp;

    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    public class SecondFragment extends Fragment{

        public View onCreate(LayoutInflater inflater, 
                ViewGroup container , Bundle savedInstanceState) {

             //Inflate the layout for this fragment

            return inflater.inflate(R.layout.fragment2,container, false);

        }

    }

当我完成所有这些操作后,我的SecondActivity会显示一个我不知道如何处理的错误:

screen shot of error

3 个答案:

答案 0 :(得分:1)

您的活动使用此import android.app.Fragment;

您的片段为import android.support.v4.app.Fragment;

因此,您要么在应用程序包中还是在支持库中扩展Fragment

答案 1 :(得分:1)

你的第二个片段是android.app.Fragment类型,而你的第一个片段是android.support.v4.app.Fragment。

答案 2 :(得分:1)

如前面的答案中所述,您的问题是FirstFragment的片段库不正确。

更改FirstFragment.java的第5行:

import android.support.v4.app.Fragment;

为:

import android.app.Fragment;