2012-06-11 20 views
1

我正在創建一個應用程序,該應用程序具有一個主要活動,並在其中包含一個FragmentPagerAdapter。四個頁面從定義的XML創建並膨脹。當我嘗試引用這些頁面中包含的任何視圖時,我得到一個NullPointerException。在FragmentPagerAdapter中引用/更新視圖

下面的代碼:

import com.viewpagerindicator.TitlePageIndicator; 
import com.viewpagerindicator.TitlePageIndicator.IndicatorStyle; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity { 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     viewPager.setAdapter(myFragmentPagerAdapter); 

     setCustomTitleBar(viewPager); 

     **// NullPointerException in next line** 
     TextView textView = (TextView) myFragmentPagerAdapter.getItem(0).getView().findViewById(R.id.page0_city); 
    } 

    private void setCustomTitleBar(ViewPager viewPager){ 
     TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.page_indicator); 
     titleIndicator.setViewPager(viewPager); 
     float density = getResources().getDisplayMetrics().density; 
     titleIndicator.setBackgroundColor(0x00000000); 
     titleIndicator.setFooterColor(0xff99c224); 
     titleIndicator.setFooterLineHeight(2 * density); //1dp 
     titleIndicator.setFooterIndicatorHeight(3 * density); //3dp 
     titleIndicator.setFooterIndicatorStyle(IndicatorStyle.Underline); 
     titleIndicator.setTextColor(0xAAAAAAAA); 
     titleIndicator.setTextSize(13 * density); 
     titleIndicator.setSelectedColor(0xFFFFFFFF); 
     titleIndicator.setSelectedBold(true); 
    } 
} 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

class MyFragmentPagerAdapter extends FragmentPagerAdapter { 
    PageZero p0; 
    PageOne p1; 
    PageTwo p2; 
    PageThree p3; 

    public MyFragmentPagerAdapter(FragmentManager fragmentManager) { 
     super(fragmentManager); 
     p0 = new PageZero(); 
     p1 = new PageOne(); 
     p2 = new PageTwo(); 
     p3 = new PageThree(); 
    } 

    @Override 
    public Fragment getItem(int index) { 
     switch (index) { 
     case 0: 
      return p0; 
     case 1: 
      return p1; 
     case 2: 
      return p2; 
     case 3: 
      return p3; 
     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     return 4; 
    } 

    public CharSequence getPageTitle(int position) { 
     switch (position) { 
     case 0: 
      return "TODAY"; 
     case 1: 
      return "MONDAY"; 
     case 2: 
      return "TUESDAY"; 
     case 3: 
      return "WEDNESDAY"; 
     } 
     return "null"; 
    } 
} 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class PageZero extends Fragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.page0, container, false); 
     return view; 
    } 
} 

我找到了兩個相關的問題,都產生了對我來說沒有任何結果:
Android: Change text within ViewPager
How do I change the view inside a fragment?

什麼是訪問的頁面的正確方法,他們的意見和內容?

回答

0

寫的TextView的TextView =(TextView的)findViewById(R.id.page0_city)在該片段中的類的方法onCreateView,像這樣 -

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.page0, container, false); 
     TextView textView = (TextView)findViewById(R.id.page0_city); 
     if(textView!=null) textView.setText("Page0"); 
     return view; 
    } 
相關問題