2014-07-09 24 views
0

我在主要活動中有以下代碼,並且我有一個FragmentLayout類,它負責調用片段。 代碼add()函數給出片段中的錯誤

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 


public class MainActivity extends FragmentActivity 
{ 
Button btn; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn=(Button)findViewById(R.id.button1); 
    btn.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
      FragmentLayout f1=new FragmentLayout(); 
      getSupportFragmentManager().beginTransaction().add(R.id.main_id, f1).commit(); 

     } 
    }); 
} 

}

我得到這個錯誤 -

在類型FragmentTransaction Add方法(INT,片段)是不適用的參數(INT,FragmentLayout)MainActivity.java。

這裏有什麼問題?

+1

'FragmentLayout'是否擴展了'Fragment'?這應該。 – matiash

+0

它擴展** FragmentActivity ** – Sucho

+0

是否有使用v4兼容API的特定reasaon?我會盡可能避免它。 – icbytes

回答

1

您只能將事務管理器用於碎片。 我爲大家提供簡單的例子: 創建一些片段和layour它:

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

而在你public void onClick(View v) 只要致電:

FragmentOne f1=new FragmentOne(); 
getSupportFragmentManager().beginTransaction().add(R.id.main_id, f1).commit(); 
1

這裏

getSupportFragmentManager().beginTransaction().add(R.id.main_id, f1).commit(); 

f1必須擴展Fragment以便作爲FragmentTransaction的一部分添加。