0

私は動作するアプリケーションを持っています。ViewPagerを使用するために変更したいと思います。つまり、新しいアクティビティを定義したので、 ViewPagerを使用してアクティビティ間をスワイプしたいと考えています。これを行うために、元のアクティビティをフラグメントに変換しました。これは元の(簡略化された)コードです

public class ListViewImagesActivity extends Activity {

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

    ArrayList<Fish> image_details = populateList();

    final ListView lv1 = (ListView) findViewById(R.id.listV_main);
    final ItemListBaseAdapter ilba = new ItemListBaseAdapter(this, image_details);
    lv1.setAdapter(ilba);

    lv1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            Object o = lv1.getItemAtPosition(position);
            Fish obj_itemDetails = (Fish) o;

            Intent intent = new Intent(ListViewImagesActivity.this, DisplayFishDetailActivity.class);

            startActivity(intent);
        }
    });
}

}

以下のようにコードを修正しました。

import android.support.v4.app.Fragment;
public class ListViewImagesActivity extends Fragment {

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState) {
    return inflater.inflate(R.layout.activity_display_fish_detail, container, false);
}

@Override
public void onStart() {
    super.onStart();

    ArrayList<Fish> image_details = populateList();

    final ListView lv1 = (ListView) getView().findViewById(R.id.pager);
    final ItemListBaseAdapter ilba = new ItemListBaseAdapter(getActivity(), image_details);
    lv1.setAdapter(ilba);

    lv1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            Object o = lv1.getItemAtPosition(position);
            Fish obj_itemDetails = (Fish) o;

            Intent intent = new Intent(getActivity(), DisplayFishDetailActivity.class);

            startActivity(intent);
        }
    });
}

現在、アダプターItemListBaseAdapterは、これを使用する代わりにgetActivity()を使用してコンテキストを受け取ります (実際、これが正しいかどうかはわかりません)。アプリケーションを実行すると、 lv1.setAdapter(ilba)Null Pointer Exceptionが発生します。

ヒントはありますか?

前もって感謝します

4

0 に答える 0