2014-02-12 49 views
7

我试着去使用Fragements。但在MainActivity.java文件中,transaction.add(R.id.my_layout, testfrag, "");未正确启动。请在下面查找我使用的代码。错误:在类型FragmentTransaction Add方法(INT,片段,字符串)不适用的参数(INT,FragementTest,字符串)

package com.example.testtabs; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.app.TabActivity; 
import android.view.Menu; 
import android.widget.TabHost; 
import android.support.v4.app.Fragment; 
import com.example.testtabs.R; 



public class MainActivity extends TabActivity { 


    TabHost tab; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FragementTest testfrag=new FragementTest(); 
     FragmentManager manager=getFragmentManager(); 
     FragmentTransaction transaction=manager.beginTransaction(); 
     transaction.add(R.id.my_layout, testfrag, "");//Error is here 

    } 
} 

activity_main.xml中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:id="@+id/my_layout" 
    > 

Error: The method add(int, Fragment, String) in the type FragmentTransaction is not applicable for the arguments (int, FragementTest, String) 

Fragement.test

package com.example.testtabs; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

/** 
* A simple {@link android.support.v4.app.Fragment} subclass. 
* 
*/ 
public class FragementTest extends Fragment { 

    public FragementTest() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_fragement, container, false); 
    } 

} 
+0

什么是FragmentTest? – Blackbelt

+3

你的'FragmentTest'扩展了'Fragment'吗? –

+0

投到(片段)。你当然可以在FragmentTest中扩展Fragment(v4)。 – icbytes

回答

19

变化:

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

到:

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

或---

变化:

import android.support.v4.app.Fragment; 

import android.app.Fragment; 
+1

现在即时得到FragmentManager经理= getFragmentManager()的代码;方法错误 类型不匹配:不能从android.app.FragmentManager转换为android.support.v4.app.FragmentManager – VenushkaT

+2

使用getSupportFragmentManager(),而不是也是你的活动必须是片段的活性。 –

+0

它没有工作我。 – VenushkaT

1

所有的片段应该是android.app.Fragment.If要使用android.support.v4.app.Fragment,你应该使用etSupportFragmentManager()来获得管理器。

+0

您应该添加 “G” “getSupportFragmentManager();” – Cabezas

0

它的工作对我来说:

而不是使用getFragmentManager使用getSupportFragmentManager()的;

相关问题