2016-03-01 70 views
0

我正在關注來自google android開發人員頻道的this指令視頻,以創建帶有選項卡的簡單應用。在哪裏實例化ViewPager - 資源未找到異常

不幸的是把代碼時:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

ViewPager viewPager = (ViewPager) findViewById(R.id.content_pager); 
PagerAdapter pagerAdapter = new ContentPager(getSupportFragmentManager()); 
viewPager.setAdapter(pagerAdapter); 

TabLayout tabLayout = (TabLayout) findViewById(R.id.content_tabs); 
tabLayout.setupWithViewPager(viewPager); 

... 

到我MainActivitys的onCreate我得到的異常消息:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.smilingkoala.ping/com.smilingkoala.ping.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x7f080050 

是請求的資源尚不可用,而我只需要實例化ViewPager別的地方,還是我犯了一些根本性的錯誤?

編輯 - 在@Chol評論後找到解決方案。下面的舊代碼: ContetnPager的cunstructor看上去與getPageTitle方法如下

public ContentPager(FragmentManager fm) { 
     super(fm); 
    } 

@Override 
public CharSequence getPageTitle(int position) { 
    switch (position) { 
     case 0: 
      return Resource.getSystem().getString(R.string.pings_page_title); 
     case 1: 
      return Resources.getSystem().getString(R.string.contacts_page_title); 
     default: 
      return null; 
    } 
} 
+0

把它崩潰這裏的代碼行。 –

+0

你可以分享ContentPager.class嗎? –

+1

將整數設置爲textview.setText()時,大部分時間都是由於此問題。在ContentPager – Chol

回答

0

我的解決方案(感謝@Chol的評論)

更改ContentPager構造到:

public ContentPager(FragmentManager fm, Context m_context) { 
    super(fm); 
    context = m_context; 
} 

and the getPageTitle方法:

@Override 
public CharSequence getPageTitle(int position) { 
    switch (position) { 
     case 0: 
      return context.getResources().getString(R.string.pings_page_title); 
     case 1: 
      return context.getResources().getString(R.string.contacts_page_title); 
     default: 
      return null; 
    } 
} 

中的onCreate改變代碼:

ViewPager viewPager = (ViewPager) findViewById(R.id.content_pager); 
    PagerAdapter pagerAdapter = new ContentPager(getSupportFragmentManager(), this); 
    viewPager.setAdapter(pagerAdapter); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.content_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
+0

是的,這是如何做,通過上下文扔適配器構造函數獲取資源 – Chol

0

只需更新這樣的:

@Override 
public CharSequence getPageTitle(int position) { 
    switch (position) { 
     case 0: 
      return String.valueOf(context.getResources().getString(R.string.pings_page_title)); 
     case 1: 
      return String.valueOf(context.getResources().getString(R.string.contacts_page_title)); 
     default: 
      return ""; 
    } 
}