Android, использующий намерение, чтобы открыть фрагмент из действия


Я реализую приложение, которое имеет gridview изображений в одном действии и один фрагмент для каждого изображения, которое содержит изображение в полноэкранном режиме. Когда я нажимаю на любое из изображений в сетке, он должен открыть соответствующий фрагмент. Однако мы не можем использовать намерение для этого. вот мой код

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);
    }
}

Этот фрагмент связан с activity ImagesSwipe. Итак, как мне добиться перехода между элементом представления сетки и соответствующим ему фрагмент. Спасибо

2 6

2 ответа:

Вам не нужен один фрагмент для одного изображения. Просто используйте один фрагмент с книги в формат для каждого изображения.

Фрагменты не вызываются как действия через намерение. Они могут существовать только как часть деятельности, для чего они и предназначены. Думать о них как пользовательского интерфейса-модуль многоразового действия. Чтобы добавить фрагмент в действие, необходимо использовать классыFragmentManager иFragmentTransaction , которые обеспечивают все взаимодействия с Фрагментарный.

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

Посмотрите на это руководство из Google Docs, где описаны основные вещи о GridViews. Кроме того, вы должны прочитать о фрагментах . А вот учебник о вашем подходе.

Вы можете проверить DialogFrament, Вот пример.

Вместо использования intent вы используете FramentManager:

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

И ваш диалоговый фрагмент становится:

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);
  }
}