2014-02-12 40 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()的;

相關問題