ViewPager中巢狀activity頁面
阿新 • • 發佈:2019-02-02
做專案使用ViewPager顯示頁面遇到一個問題,就是當一個activity對應的xml頁面使用了ViewPager控制元件,並且控制元件中的子頁面也是activity頁面時,子頁面的事件如果使用匿名內部類方式,會直接執行不到,如果使用onClick方式,這時候會提示在父activity頁面沒有該方法,根據提示你會發現當事件寫到父activity中就不會出錯了,如果只有一兩個控制元件那也無所謂了,但是通常activity對應的頁面事件不會很少,那麼好幾個子activity的事件都寫到父activity中程式碼不止亂,而且還很難維護,那麼該怎麼讓每個子頁面的事件寫到自己的activity中呢。
示例;
父activity--------StartActivity,java activity_start.xml頁面(包含ViewPager控制元件,id為id_ViewPager)
子activity--------MainActivity.java activity_main.xml
activity--------CircleActivity.java activity_circle.xml
activity--------MyActivity.java activity_my.xml
通常都會在StartActivity.java頁面設定ViewPager關聯子頁面的語句,一般格式為:
- private List<View> mViews = new ArrayList<View>();
- private ActivityAdapter adapter = new ActivityAdapter(mViews);
- LayoutInflater mInflater = LayoutInflater.from(this);
- View tab01=mInflater.inflate(R.layout.activity_main,null);//引數為想要放置的子activity頁面
-
View tab02 = mInflater.inflate(R.layout.activity_circle, null
- View tab03 = mInflater.inflate(R.layout.activity_my, null);
- mViews.add(tab01);//將頁面新增到View集合
- mViews.add(tab02);
- mViews.add(tab03);
- id_ViewPager.setAdapter(adapter);// 配置介面卡
- private List<View> mViews = new ArrayList<View>();
- private ActivityAdapter adapter = new ActivityAdapter(mViews);
- private LocalActivityManager manager;
- private Intent intentMain,intentCircle,intentMy;
- manager = new LocalActivityManager(this, true);
- manager.dispatchCreate(savedInstanceState);
- intentMain = new Intent(StartActivity.this, MainActivity.class);
- View tab01 = manager.startActivity("viewID", intentMain).getDecorView();
- intentCircle = new Intent(StartActivity.this, CircleActivity.class);
- View tab02 = manager.startActivity("viewID", intentCircle).getDecorView();
- intentMy = new Intent(StartActivity.this, MyActivity.class);
- View tab03 = manager.startActivity("viewID", intentMy).getDecorView();
- mViews.add(tab01);//將頁面新增到View集合
- mViews.add(tab02);
- mViews.add(tab03);
- id_ViewPager.setAdapter(adapter);// 配置介面卡