1

これが機能しない理由を誰か教えてもらえますか? このファイルは最後に機能して以来変更していませんが、次のエラーが表示されます。

import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {

private final static int NUM_PAGES = 2;
private ViewPager mPager;
private ScreenSlidePagerAdapter mAdapter;

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

// Instantiate a ViewPager and a PagerAdapter.
mPager = (ViewPager) findViewById(R.id.pager);
mAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
mPager.setAdapter(mAdapter);
mPager.setCurrentItem(2);
}

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int i) {

    Fragment frag = null;

    switch (i) {
    case 0:
        frag = new PageOneFragment();
        break;
    case 1:
        frag = new PageTwoFragment();
        break;

    }
    return frag;
}

@Override
public int getCount() {
    return NUM_PAGES;
}
}
}

エラーは「frag = new PageTwoFragment();」にあります。「型の不一致: PageTwoFragment から Fragment に変換できません」と表示されます。

たぶん、今から 2 つのプロジェクトを作成する必要があります。最後の正常なバージョンと現在の作業中のプロジェクトです。これは他の人がすることですか?

ありがとう

4

2 に答える 2

3

問題は、API11 で導入された Android フラグメントと Android サポート ライブラリのフラグメントを混在させていることです。

どちらか一方を使用する必要がありますが、両方を使用する必要はありません。

インポートを次のように変更します

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

に変更getFragmentManager()getSupportFragmentManager()ます。

また、サポートライブラリを使用して動作します。

mPager.setCurrentItem(2);ただし、2 Fragments のポケットベルで呼び出すとクラッシュします。0あなたの場合、とのみ1が有効な値です。

于 2013-09-07T12:47:19.463 に答える
1

間違ったフラグメントをインポートしました。

android.support.v4.Fragment をインポートする必要があります

さらに、アダプターは 2 つのフラグメントしか処理しません。したがって、呼び出し

ViewPager.setCurrentItem(2);

最初のフラグメントのインデックスが 0 であるため、問題が発生します。

于 2013-09-07T12:47:21.240 に答える