静的要素と動的要素の両方を組み合わせたUIを構築しようとしています。このため、アクティビティをフラグメントに分割しました。すべてのアプリナビゲーションは、アクティビティ間を移動するのではなく、フラグメントを置き換えることによって行われます。
私のメインアクティビティレイアウトでは、FrameLayout
を使用しています。
_<FrameLayout
Android:id="@+id/mainframe"
Android:layout_height="match_parent"
Android:layout_width="match_parent"
Android:layout_below="@id/topsection"
Android:layout_above="@id/lowersection" />
_
そのように宣言されたフラグメントがあります:
_public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragmentlayout, container, false);
}
}
_
次に、メインアクティビティ(FragmentActivityを拡張し、インポート_Android.support.v4.app.FragmentActivity
_を使用)で、このフラグメントをフレームレイアウトにロードしようとしています。
_MyFragment myf = new MyFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.mainframe, myf);
transaction.commit();
_
私は他の多くの例からこれに従いましたが、transaction.add()
コマンドでコンパイラエラーを受け取りました。
私が受け取っているエラーはThe method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MyFragment)
です。
どうしてこれなの? MyFragment
クラスはFragment
を拡張しているので、これでうまくいくと思いました。私は何を間違えていますか?
編集:私のメインアクティビティのインポートは次のとおりです。
_import org.joda.time.DateTime;
import Android.app.FragmentTransaction;
import Android.database.Cursor;
import Android.os.Bundle;
import Android.os.Handler;
import Android.support.v4.app.FragmentActivity;
import Android.view.Menu;
import Android.view.MenuItem;
import Android.view.View;
import Android.widget.TextView;
import Android.widget.Toast;
_
インポートを確認してください。 _Android.support.v4.app.FragmentTransaction
_の代わりに_Android.app.FragmentTransaction
_を使用します。
さらに、必ず_Android.support.v4.app.Fragment
_を使用し、getSupportFragmentManager()
を呼び出してください。この呼び出し/インポートを見逃すのは簡単です。 FragmentManagerのヒントによるsaiful103aへのThx。