web-dev-qa-db-ja.com

AndroidでImageViewをクリックして、あるフラグメントから別のフラグメントに移動する方法は?

ImageViewがあります。 Imageviewのクリックで、あるフラグメントから別のフラグメントに移動したい。

Intent i=new Intent(MainActivity.this,SecondActivity.class);
startActivity(i);

これどうやってするの?誰も私にステップバイステップで説明できますか?

私のコードは次のとおりです。

mycontacts.class

public class mycontacts extends Fragment {
    public mycontacts() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        final View v = super.getView(position, convertView, parent);
        ImageView purple=(ImageView)v.findViewById(R.id.imageView1);
        purple.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
            // TODO Auto-generated method stub
            //how to go to tasks fragment from here???
            }
        });
        return view;

    } 
}

tasks.class

public class tasks extends Fragment {
    public tasks() { 
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_layout_one, container,
            false);

        return view;
    }
}
16
user3256145
purple.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Fragment fragment = new tasks();
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.content_frame, fragment);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
    }
});

上記のコードを記述します... R.id.content_frameをフラグメントに置き換えています。これがあなたを助けることを願っています

52
GvSharma

fragmentManagerトランザクションを使用して別のフラグメントに移動できます。フラグメントは、アクティビティのように呼び出すことはできません。断片は、活動の存在に存在します。

以下のコードを記述することにより、別のフラグメントを呼び出すことができます。

        FragmentTransaction t = this.getFragmentManager().beginTransaction();
        Fragment mFrag = new MyFragment();
        t.replace(R.id.content_frame, mFrag);
        t.commit();

ここで、「R.id.content_frame」は、フラグメントを置き換えるレイアウトのIDです。

replaceの場合、他のフラグメントを追加することもできます。

1
Ashok Singhal

onClickListener.onClick内に、

getFragmentManager().beginTransaction().replace(R.id.container, new tasks()).commit();

別のWordでは、mycontacts.classで

public class mycontacts extends Fragment {

    public mycontacts() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View v = super.getView(position, convertView, parent);
        ImageView purple = (ImageView) v.findViewById(R.id.imageView1);
        purple.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                getFragmentManager()
                        .beginTransaction()
                        .replace(R.id.container, new tasks())
                        .commit();
            }
        });
        return view;

    }
}

ここで、R.id.containerはフラグメントを呼び出すアクティビティのコンテナ(FrameLayoutまたはその他のレイアウト)であることを思い出してください

1
t_mo_t