0

現在、Androidアプリケーションで作業しています。 GridViewを画面の左側に、MapViewを画面の右側に配置したいとします(レイアウトが横長であることを前提としています)。 GridViewには現在SDカードに保存されている写真が含まれており、選択するとexifタグが抽出され、GPS情報があればマップビューでターゲットになります。SDカードから画像をロードする、マップビューのフラグメントの横にグリッドビューのフラグメントを表示します。

現在、地図の一部を表示するには、inazarukのMap Fragment Exampleを使用しています。

私はグリッドフラグメントクラス内でFragmentを拡張し、LoaderManager.Callbackを実装しています。ただし、 "getLoaderManager()。initLoader"メソッドは、PhotoGridFragmentクラスが適用されないというエラーを表示します。

PhotoGridFragmentの現在のコードは次のとおりです。

public class PhotoGridFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { 

// member variables for 
private static final int PHOTO_LIST_LOADER = 0x01; 
private SimpleCursorAdapter adapter; 
private CursorLoader cursorLoader; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getLoaderManager().initLoader(PHOTO_LIST_LOADER, null, this); 
    adapter = new SimpleCursorAdapter(
      getActivity().getApplicationContext(), R.layout.grid_item, 
      null, new String[] { MediaStore.Images.Thumbnails.IMAGE_ID }, null, 
      CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); 
} 

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



// Loader manager methods 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String[] projection = { MediaStore.Images.Thumbnails._ID }; 
    CursorLoader cursorLoader = new CursorLoader(getActivity(), 
      MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, 
      null, null, null); 
    return cursorLoader; 
} 

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 
    adapter.swapCursor(cursor); 
} 

public void onLoaderReset(Loader<Cursor> cursor) { 
    adapter.swapCursor(null); 
} 

私ははっきり断片の初期化でどこか間違っているつもりですが、私はどこ全くわかりません。必要に応じて編集してアプリケーションの残りの部分にコードを与えることができます。

基本的に私は知りたい:なぜこのコードは機能しないのですか?そして、SDカードから画像を取り出す私の方法は正しいですか?それとも間違っていますか?

答えて

0

これを解決しました。私は互換性フラグメントクラス(例えばandroid.support.v4.app.Fragment)を使用していました。 「initLoader」メソッドは互換性フラグメントをパラメータとして取りません。 android.app.Fragmentに変更した後、この問題は解決されました。

関連する問題