1

私の目標は、ViewPager (ここのように) を使用して、MainActivity が開始する前に、ユーザーが 5 つの異なるページ (チュートリアル) をスライドできるようにすることです...

上記のリンクから Animations.zip をダウンロードしましたが、古いバージョン (android.app 参照を android.support.v4.app に変更することで管理したもの) をサポートし、使用する代わりにまったく異なるレイアウトを使用することを除いて、ほとんど必要なものです。例と同じビュー...

私のコードはコンパイルされて実行されますが、携帯電話の画面ではスライドの変化が見えません。アクションバーが表示され、そのボタンは正常に機能し、最初/最後のページに到達してもう一度スライドしようとすると、青い光が見えることさえあります.Androidは何らかの理由でデフォルトのレイアウトを生成していると思います.

デバッグ中に、フラグメント内の onCreateView() が実行されないことに気付きました。理由はありますか?私のコードは以下の通りです:

como_usar_fragment.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView style="?android:textAppearanceMedium"
          android:id="@+id/texto_como_usar_fragment"
          android:padding="16dp"
          android:lineSpacingMultiplier="1.2"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="aglaglalglaglalgalgalglag"
          android:textColor="@color/branco"
        />
<ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/logo"
    />

ComoUsarFragment.java

public class ComoUsarFragment extends Fragment {
/**
 * The argument key for the page number this fragment represents.
 */
public static final String ARG_PAGE = "page";

/**
 * The fragment's page number, which is set to the argument value for {@link #ARG_PAGE}.
 */
private int mPageNumber;

/**
 * Factory method for this fragment class. Constructs a new fragment for the given page number.
 */
public static Fragment create(int pageNumber) {
    Fragment fragment = new Fragment();
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, pageNumber);
    fragment.setArguments(args);
    return fragment;
}

public ComoUsarFragment() {
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mPageNumber = getArguments().getInt(ARG_PAGE);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    //this is an attempt to set different views for each page, you'll see I dont use this piece of code yet
    int pagina;
    switch (mPageNumber){
        case 0: pagina = R.layout.como_usar0;
            break;

        case 1: pagina = R.layout.como_usar1;
            break;

        case 2: pagina = R.layout.como_usar2;
            break;

        default: pagina = R.layout.como_usar_fragment;
            break;
    }


    // Inflate the layout containing a title and body text.
    ViewGroup rootView = (ViewGroup) inflater
            .inflate(R.layout.como_usar_fragment, container, false);

    // Set the title view to show the page number.
    ((TextView) rootView.findViewById(android.R.id.text1)).setText("aaaaa "+mPageNumber);

    return rootView;
}

/**
 * Returns the page number represented by this fragment object.
 */
public int getPageNumber() {
    return mPageNumber;
}

}

4

1 に答える 1

2

独自のサブクラスではなく標準フラグメントを返しています

public static Fragment create(int pageNumber) {
    Fragment fragment = new Fragment();
    ...

する必要があります

public static Fragment create(int pageNumber) {
    Fragment fragment = new ComoUsarFragment();
    ...
于 2013-10-16T13:49:52.663 に答える