簡體   English   中英

ViewPager中的TextView

[英]TextView in a viewpager

我有一個包含多個fragmentsViewPager Activity 現在如何在其中一個fragments訪問TextView來從主要activity更改其文本? 我嘗試了多種方法,但都以錯誤結束,這是My headerAdapter

 public class HeaderAdapter extends FragmentPagerAdapter {
     private List<Fragment> fragments;
     public HeaderAdapter(FragmentManager fm,List<Fragment> fragments) {
         super(fm);
         this.fragments=fragments;
     }

     @Override
     public Fragment getItem(int position) {
         return this.fragments.get(position);
     }

     @Override
     public int getCount() {
         return this.fragments.size();
     }

我的header.xml包含一個imageview和一個文本視圖,如下所示:

<RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/fj"
         android:textColor="#ff0000"
         android:textSize="100dp"
         android:text="aaa"
         />
     <ImageView
         android:alpha="0.7"
         android:layout_width="wrap_content"
         android:layout_height="203dp"
         android:id="@+id/head1"
         android:scaleType="fitXY"
         android:src="@drawable/dash_widget_0"/>
     </RelativeLayout>

我的視圖尋呼機是這樣的:

 <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:weightSum="1">

   <android.support.v4.view.ViewPager
         android:layout_width="wrap_content"
         android:layout_height="203dp"
         android:id="@+id/header_pager"
        >
     </android.support.v4.view.ViewPager>

mainActivity我需要改變textView

您不應該從活動訪問textview。 這將在以后很難理解,並且還會導致代碼完全混亂。

您應該做的是實現在片段內部完成工作的公共方法。 可以通過調用(YOUR_FRAGMENT_TYPE)HeaderAdapter#getItem(index)以一種非常簡單的方式來訪問此方法。 為了避免類型轉換時出現異常,請使用instanceOf檢查Fragment。

即使使用它們可能是實現您正在執行的操作的更好方法。 您可以使用此方法從視圖分頁器中獲取對片段的引用

private Fragment getFragmentFromPager(int index) {
    return getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.header_pager + ":" + index);
}

只需在Fragment中保留對TextView的公共引用,以便您可以訪問它。

暫無
暫無

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

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