0

これは私のフラグメントです。フラグメント内からフラグメントを変更しようとしています。新しいフラグメントを使用して新しいアクティビティを作成し、それを作成して意図し、そのルートに進むことができることを私は知っています。しかし、私は実際に1つの場所でのみ更新したいコンテンツを含むアクティビティを持っています。最初に作成したアクティビティを使用しながら、フラグメントを別のフラグメントに変更する方法を教えてもらえますか?

    view = inflater.inflate(R.layout.inst_fragment, container, false);
    furnTextView = (TextView) view.findViewById(R.id.furn_textview);
    archTextView = (TextView) view.findViewById(R.id.arch_textview);

    furnTextView.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(MotionEvent.ACTION_UP == event.getAction()){
                openCatalog("furn");
            }
            return false;
        }
    });
    archTextView.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(MotionEvent.ACTION_UP == event.getAction()){
                openCatalog("arch");
            }
            return false;
        }
    });

    return view;
4

2 に答える 2

0

このコードを試してみてください。現在のフラグメントが置き換えられ、元のフラグメントが復元されます。

NewFragment fragment = NewFragment.newInstance();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.addToBackStack("BACKSTACK");
ft.replace(R.id.home_list, fragment);
ft.commit(
于 2013-02-04T21:58:59.713 に答える
0

したがって、 1つを作成せずに別のものを「追加」できる方法は、関数を使用Fragmentすることです。これはおそらくあなたがあなたの最初のものを追加している方法です:Activityreplace()FragmentFragmentActivity

public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.news_articles);

    if (findViewById(R.id.fragment_container) != null) {

        if (savedInstanceState != null) {
            return;
        }

        MyFirstFragment firstFragment = new HeadlinesFragment();
        firstFragment.setArguments(getIntent().getExtras());

        // Add the fragment to the 'fragment_container' FrameLayout
        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, firstFragment).commit();
    }
}

}

そして、で使用replaceすると、別のものとFragmentTransaction置き換えることができます:MyFirstFragment

MyNewFragment newFragment = new MyNewFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();

それで全部です。それが役に立てば幸い!:)

于 2013-02-04T22:37:20.007 に答える