0

このコードに問題があります:

MyAdapter.java:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;


public static class MyAdapter extends FragmentStatePagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);

    }

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0: return new SpeedZonesFragment();
        case 1: return new DistanceFragment();
        case 2: return new FuelConsumptionFragment();
        default: return null;
        }
    }
}

MainActivity.java:

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {

    private MyAdapter myAdapter;
    private ViewPager myViewPager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_pager);

        myAdapter = new MyAdapter(getSupportFragmentManager());

        myViewPager = (ViewPager) findViewById(R.id.pager);
        myViewPager.setAdapter(myAdapter);

view_pager.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" >

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/view_pager" />

</LinearLayout>

public static class私の問題は、私が見つけることができるすべての例がMyAdapter を宣言しているがEclipse、エラーが発生することです: Illegal modifier for the class MyAdapter; only public, abstract & final are permitted.

(LogCat から) 返される static なしでコードを実行しようとすると、次のようになります。

Caused by: java.lang.NullPointerException 02-02 23:13:26.076: E/AndroidRuntime(928): at simcas.fartberegneren.MainActivity.onCreate(MainActivity.java:23)

編集: 23行目は行ですmyViewPager.setAdapter(myAdapter);

明らかに私は何か間違ったことをしていますが、それを見つけることができません。

4

1 に答える 1

2

まず、いいえ、staticクラスは、内部クラスのインスタンスが外部クラスのインスタンスに関連付けられてはならない内部クラスにのみ使用されます。(つまり、外部クラスでは、static変更されたを使用しないでください。)

myViewPager.setAdapter(myAdapter);第二に、あなたが推測したように、ヌルポインターはステートメントにあります。意味myViewPagerはヌルです。したがって、findViewById()は null を返します (アイテムが見つかりません):

myViewPager = (ViewPager) findViewById(R.id.pager);

XML で次の点に注意してくださいandroid:id="@+id/view_pager"。上記の行は次のようになります。

myViewPager = (ViewPager) findViewById(R.id.view_pager);
于 2013-02-03T00:24:34.237 に答える