6

1 つのアクティビティに画像のグリッドビューがあり、全画面表示の画像を含む画像ごとに 1 つのフラグメントがあるアプリを実装しています。グリッド内の画像をクリックすると、対応するフラグメントが開きます。ただし、インテントを使用してこれを行うことはできません。ここに私のコードがあります

public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            // TODO Auto-generated method stub
            if(position==0)
            {
                Intent i=new Intent(Gallery.this,ImageFrag1.class);
                startActivity(i);
            }

そしてフラグメントは

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ImageFrag1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.imagefrag1, container, false);
    }
}

このフラグメントはアクティビティ ImagesSwipe にバインドされています。SOグリッドビューアイテムとそれに対応するフラグメントの間の遷移をどのように達成するのですか? ありがとう

4

2 に答える 2

6

1 つの画像に対して 1 つのフラグメントは必要ありません。すべての画像のレイアウトで ImageView を使用して 1 つの Fragment を再利用するだけです。

フラグメントは、アクティビティのようにインテントを通じて呼び出されません。それらは、アクティビティの一部としてのみ存在できます。これが、それらが設計されている理由です。アクティビティの再利用可能な UI モジュールと考えてください。Fragment を Activity に追加するには、FragmentManagerFragmentTransactionクラスを使用する必要があります。これらは Fragment とのすべてのやり取りを提供します。

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.add(YourFragment.newInstance(), null);
    ft.commit();

GridViews に関する基本事項が説明されている Google ドキュメントのこのガイドをご覧ください。さらに、Fragmentsについて読む必要があります。そして、ここにあなたのアプローチに関するチュートリアルがあります。

于 2013-07-09T20:46:22.717 に答える
1

DialogFrament を確認することをお勧めします。ここに例を示します。

インテントを使用する代わりに、FramentManager を使用します。

if(position==0)
{
FragmentManager fm = getFragmentManager();
ImageFrag1 imageDialog = new ImageFrag1()
ImageFrag1.show(fm, "image_title");
}

そして、dialogFrament は次のようになります。

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ImageFrag1 extends DialogFragment {

public ImageFrag1() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return inflater.inflate(R.layout.dialog_fragment, container, false);
  }
}
于 2013-07-09T19:55:14.530 に答える