簡體   English   中英

如何在ViewPager包含的Fragment中更改視圖?

[英]How can I change view in Fragment which is contained ViewPager?

我正在使用ViewPagerTabLayout 而且ViewPager由4個片段組成(例如,我稱這些片段的名稱為1、2、3、4)。 我的2(第二個片段)有一個ListView ,如果我單擊一個列表項,則將2(第二個片段)更改為另一個視圖。 當時,另一個視圖不是1、3或4。 That is a new view

目的是確定董事會的category (例如運動足球中場)。 因此,當我選擇運動項目時,視圖將顯示另一個列表項(例如足球,棒球,籃球等)。 該類別將包含3個步驟。 因此,我將准備2(第二個片段)的第二個和第三個視圖。 但我不知道如何更改視圖或片段。 我在Google中找到了解決此問題的線索。

那是

FragmentManager fm = getFragmentManager();
FragmentTransaction fmt = fm.beginTransaction();
View2 v2 = new View2(); // View2 is another view
fmt.replace(R.id.view1, v2);
fmt.commit();

我使用了該代碼,它成功地更改了視圖。 但是只有一部分觀點被改變了。 問題是什么? 我該如何解決?

這是第二個片段的照片

在此處輸入圖片說明

這是單擊列表項時的視圖。 僅有一部分視圖被更改。

在此處輸入圖片說明

(我不能直接附上圖片,所以請有人幫忙^^)

這是我的第二段代碼。

public class MatchingFragment extends Fragment {

    View2 v2;

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

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

        final MatchingListViewAdapter adapter = new MatchingListViewAdapter();

        ListView listView = (ListView) view.findViewById(R.id.matching_list1);
        listView.setAdapter(adapter);

        adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.lock), "LOCK", "This is lock icon");
        adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.setup), "SETUP", "This is setup icon");
        adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.user), "USER", "This is user icon");

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                FragmentManager fm = getFragmentManager();
                FragmentTransaction fmt = fm.beginTransaction();
                v2 = new View2();
                fmt.replace(R.id.view1, v2);
                fmt.commit();
                adapter.notifyDataSetChanged();
            }
        });
        return view;
    }
}

謝謝。

我認為您需要在單擊列表視圖上的項目時開始一項活動。 因為如果您用viewpager替換新片段,那么如何返回上一個片段。 以及為什么創建View2()對象,其目的是什么?

如果要用viewpager替換片段,請使用此代碼,不要用viewpager替換viewpager

Fragment fragment = new FragmentOne();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.view, fragment);
ft.commit();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM