7

メイン アクティビティにフラグメントを追加したいので、このフラグメント クラス (TitleFragment.java) を用意します。

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

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

次は、に含まれる私のフラグメントの実際のコンテンツですfragment_title.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
       <ImageView 
        android:id="@+id/logo_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/logo_main"
        android:contentDescription="@string/app_name"
        android:scaleType="fitStart"
        android:adjustViewBounds="true" />
</LinearLayout>

そして、activity_main.xml私の中には、アクティビティの通常のコンテンツの中にこのスニペットがあります:

<fragment 
            android:name="com.myapp.app1.TitleFragment"
            android:id="@+id/title_fragment"
            android:layout_width="0dp"
            android:layout_height="match_parent" />

この方法はフラグメントを作成する正しい方法ですか? アプリがクラッシュし、LogCat はフラグメント ビューの膨張に関係しているように見えますが、よくわかりません。

ところで、このフラグメントの理由は、すべてのページに存在するアプリのロゴ (画像と更新可能なテキスト) を持つことですが、これはそのようなことを行うための良い方法ですか? 初心者の質問で申し訳ありません。

4

5 に答える 5

12

からフラグメントを開始しましたMainActivity。主な活動は多岐にわたりFragmentActivityます。私が使用した方法は次のとおりです。

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.body_frame, new MyFragment()).commit();

あなたの場合、次のようになります。

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.title_fragment, new TitleFragment()).commit();

FragmentActivityを使用して開始したことを思い出してFragmentください。また、以前android-support-v4.jar は古いバージョンの OS でフラグメントをサポートしていました。なしandroid-support-v4.jarFragmentManager manager = getSupportFragmentManager();場合、次のようになります。FragmentManager manager = getFragmentManager();

編集:

フラグメント クラスを変更する必要があります。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view =  inflater.inflate(R.layout.fragment_title, container, false);
    // you can use findViewById() using the above 'view'
      ......................
      ....your code........
       ................
    return view;
}
于 2013-02-19T04:25:45.267 に答える
0

activity_main.xmlレイアウトが拡張されているアクティビティが拡張FragmentActivityされていないことを確認してくださいActivity

于 2013-02-19T04:24:52.747 に答える