0

背景情報はこちら。

このコードを使用して、テキストと画像をいくつかのカスタム属性 (カスタム フォント、画像など) で編集しました。

//Font Loader
    Typeface ralewayFont = Typeface.createFromAsset(getAssets(), "fonts/raleway.ttf");
    Typeface abeatFont = Typeface.createFromAsset(getAssets(), "fonts/abeat.otf");

    TextView hiText = (TextView) findViewById(R.id.hi);
    TextView welcomeText = (TextView) findViewById(R.id.welcome);
    TextView chancechatText = (TextView) findViewById(R.id.chancechat);

    hiText.setTypeface(ralewayFont);
    welcomeText.setTypeface(ralewayFont);
    chancechatText.setTypeface(abeatFont);

それは小さな抜粋です。メイン アクティビティの onCreate メソッドの下に配置されました。

これで、フラグメントをそのまま実装しました。コードをどこに実装しますか。(古いコードと WelcomePage メソッドを試しました。ここに新しいコードがあります。何かアイデアはありますか? また、editTexts を activity_main.xml から fragment_main_dummy.xml に移動したことに注意してください。

public class MainActivity extends FragmentActivity {

/**
 * The {@link android.support.v4.view.PagerAdapter} that will provide
 * fragments for each of the sections. We use a
 * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which
 * will keep every loaded fragment in memory. If this becomes too memory
 * intensive, it may be best to switch to a
 * {@link android.support.v4.app.FragmentStatePagerAdapter}.
 */
SectionsPagerAdapter mSectionsPagerAdapter;

/**
 * The {@link ViewPager} that will host the section contents.
 */
ViewPager mViewPager;

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

    // Create the adapter that will return a fragment for each of the three
    // primary sections of the app.
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override  
    public Fragment getItem(int position) {  
        Fragment fragment = new Fragment();  
        switch (position) {  
        case 0:  
            return fragment = new WelcomePage();  
        case 1:  
            return fragment = new Facebook();   
        default:  
            break;  
        }  
        return fragment;
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
        case 0:
            return getString(R.string.title_section1).toUpperCase(l);
        case 1:
            return getString(R.string.title_section2).toUpperCase(l);
        case 2:
            return getString(R.string.title_section3).toUpperCase(l);
        }
        return null;
    }

}

public static class WelcomePage extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        ViewGroup rootView = (ViewGroup) inflater.inflate(
                R.layout.fragment_main_dummy, container, false);


        return rootView;
    }
}

public static class Facebook extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(
                R.layout.fragment_main_two, container, false);

        return rootView;
    }
}

}

4

1 に答える 1

0

あなたが達成しようとしていることを100%確信しているわけではないので、間違った仮定をしている場合は修正してください.

フラグメントの onCreate() 内でルート ビューにアクセスできないため、onActivityCreated() メソッド内で TextViews を設定することをお勧めします。WelcomePage フラグメントを次のように変更します。

アプリケーション コンテキストの参照を WelcomePage に渡すように変更して更新されました。

public class MainActivity extends FragmentActivity {
    Context appContext;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        appContext = getApplicationContext();
    }

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override  
    public Fragment getItem(int position) {  
        Fragment fragment = new Fragment();  
        switch (position) {  
        case 0:  
            return fragment = new WelcomePage(appContext);  
        case 1:  
            return fragment = new Facebook();   
        default:  
            break;  
        }  
        return fragment;
    }
}


public static class WelcomePage extends Fragment {

    private View rootView;
    private Context context;

    public WelcomePage(Context c) {
        context = c;
    }

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                             Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_main_two, container, false);
        return rootView;
    }

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        Typeface ralewayFont = Typeface.createFromAsset(context.getAssets(), "fonts/raleway.ttf");
        Typeface abeatFont = Typeface.createFromAsset(context.getAssets(), "fonts/abeat.otf");

        TextView hiText = (TextView) rootView.findViewById(R.id.hi);
        TextView welcomeText = (TextView) rootView.findViewById(R.id.welcome);
        TextView chancechatText = (TextView) rootView.findViewById(R.id.chancechat);

        hiText.setTypeface(ralewayFont);
        welcomeText.setTypeface(ralewayFont);
        chancechatText.setTypeface(abeatFont);
    }
}
于 2013-06-30T21:21:11.137 に答える