无法使用字符串作为选项卡名称
Unable to use strings for tab names
我正在学习本教程并希望将字符串资源用于我的选项卡名称,但显然我不能在本教程中这样做。无论如何有人知道吗?
public class MainActivity extends ActionBarActivity {
// Declaring Your View and Variables
Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
CharSequence Titles[]={"Home","Events"};
int Numboftabs =2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Creating The Toolbar and setting it as the Toolbar for the activity
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
// Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);
// Assigning ViewPager View and setting the adapter
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
// Assiging the Sliding Tab Layout View
tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width
// Setting Custom Color for the Scroll bar indicator of the Tab View
tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.tabsScrollColor);
}
});
// Setting the ViewPager For the SlidingTabsLayout
tabs.setViewPager(pager);
}
}
要在 de FragmentStatePagerAdapter 中使用字符串资源,您需要一个上下文,因此您需要更改 class 的构造函数并传递一个上下文。
public ViewPagerAdapter(FragmentManager fm, int mNumbOfTabsumb, Context context) {
super(fm);
this.NumbOfTabs = mNumbOfTabsumb;
this.context = context;
}
所以在您获取页面标题时,您不需要 return 您的 Titles[position]
。
你可以这样做:
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case FRAGMENT_1:
return context.getResources().getString(R.string.some_string);
}
return super.getPageTitle(position);
}
其中 FRAGMENT_1 是 class 的常数。
如果你不再使用你的标题,你可以从构造函数中删除它,因为这个我删除了。
在您的 assets
文件夹中放置一个文本文件,其中包含您要使用的标题。
获取文件:
AssetManager assetManager = getAssets();
InputStream ims = assetManager.open("helloworld.txt");
使用 InputStream 读取文件(google 获取模板)
阅读时,做如下事情:
CharSequence Titles[] = new CharSequence[2];
int index = 0;
while(textFile.hasNext() && index < Titles.length){
String lineInTextFile = textFile.next();
Titles[index] = lineInTextFile;
index++;
}
我正在学习本教程并希望将字符串资源用于我的选项卡名称,但显然我不能在本教程中这样做。无论如何有人知道吗?
public class MainActivity extends ActionBarActivity {
// Declaring Your View and Variables
Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
CharSequence Titles[]={"Home","Events"};
int Numboftabs =2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Creating The Toolbar and setting it as the Toolbar for the activity
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
// Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);
// Assigning ViewPager View and setting the adapter
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
// Assiging the Sliding Tab Layout View
tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width
// Setting Custom Color for the Scroll bar indicator of the Tab View
tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.tabsScrollColor);
}
});
// Setting the ViewPager For the SlidingTabsLayout
tabs.setViewPager(pager);
}
}
要在 de FragmentStatePagerAdapter 中使用字符串资源,您需要一个上下文,因此您需要更改 class 的构造函数并传递一个上下文。
public ViewPagerAdapter(FragmentManager fm, int mNumbOfTabsumb, Context context) {
super(fm);
this.NumbOfTabs = mNumbOfTabsumb;
this.context = context;
}
所以在您获取页面标题时,您不需要 return 您的 Titles[position]
。
你可以这样做:
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case FRAGMENT_1:
return context.getResources().getString(R.string.some_string);
}
return super.getPageTitle(position);
}
其中 FRAGMENT_1 是 class 的常数。 如果你不再使用你的标题,你可以从构造函数中删除它,因为这个我删除了。
在您的 assets
文件夹中放置一个文本文件,其中包含您要使用的标题。
获取文件:
AssetManager assetManager = getAssets();
InputStream ims = assetManager.open("helloworld.txt");
使用 InputStream 读取文件(google 获取模板)
阅读时,做如下事情:
CharSequence Titles[] = new CharSequence[2];
int index = 0;
while(textFile.hasNext() && index < Titles.length){
String lineInTextFile = textFile.next();
Titles[index] = lineInTextFile;
index++;
}