如何在pagerTabStrip中使用id和字符串

时间:2013-01-25 15:17:59

标签: string android-fragments android-viewpager

关于访问字符串中的信息的超级新手问题。我把一个使用fragmentpager和PagerTabStrip的应用程序组合在一起。

它应该在选项卡上显示标题,但是我没有显示任何内容......因为我是一个全新的黑客攻击他的方式。我非常感谢这个社区。

从我调用内容的布局文件(一旦我将其修改为标题 - id @ pager_header对吧?):

<android.support.v4.view.PagerTabStrip
    android:id="@+id/pager_header"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:paddingBottom="4dp"
    android:paddingTop="4dp"
    android:textColor="#ffffff" />

我的代码为我提供了可刷卡的内容页面:

公共课诗歌扩展了FragmentActivity {

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

    /** Getting a reference to the ViewPager defined the layout file */        
    ViewPager pager = (ViewPager) findViewById(R.id.pager);

    /** Getting fragment manager */
    FragmentManager fm = getSupportFragmentManager();

    /** Instantiating FragmentPagerAdapter */
    MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm);

    /** Setting the pagerAdapter to the pager object */
    pager.setAdapter(pagerAdapter);


}

}

我的代码应该从字符串参考文件中获取标题。

public class MyFragment extends Fragment{

int mCurrentPage;

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

    /** Getting the arguments to the Bundle object */
    Bundle data = getArguments();

    /** Getting integer data of the key current_page from the bundle */
    mCurrentPage = data.getInt("current_page", 0);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     
    View v = inflater.inflate(R.layout.myfragment_layout, container,false);
    TextView tv = (TextView ) v.findViewById(R.id.tv);
    tv.setMovementMethod(new ScrollingMovementMethod());
    switch(mCurrentPage){
    case 0:
       tv.setText("  ");
    break;
    case 1:
        tv.setText(R.string.content_1);
    break;
    case 2:
        tv.setText(R.string.content_2);
        break;
    case 3:
        tv.setText(R.string.content_3);
        break;
                    }
        return tv;

}

}

如何从中获取pager_header?

示例相关字符串是:

<string name="content_1">Welcome to this app!</string>

我想我需要更好地理解字符串,因为我来自更多的文本内容背景。

如何在stings.xml文件中包含允许应用引用与网页浏览相关联的内容的指标,以便我可以在标签中显示该内容?我如何做到这一点,以便内容显示“欢迎使用此应用程序”,但标签中的标题显示“主页”?

我认为好像每个条目(页面)就像数据库中的一行,其中一个参考点是标题,一个是内容,一个是链接或其他内容。每个都有自己的ID,对吗?

提前感谢您向初学者解释这一点。

1 个答案:

答案 0 :(得分:0)

您需要在getPageTitle(int position)中实施MyFragmentPagerAdapter。从此方法返回的String用于设置PagerTabStrip的标题。

@Override
public CharSequence getPageTitle(int position) {
    Log.v(TAG, "getPageTitle");

    String tabTitle;
    switch(position) {
        case 0:
            tabTitle = "Tab #0";
            break;
        case 1:
            tabTitle = "Home";
            break;
        case 2:
            tabTitle = "Tab #2";
            break;
        case 3:
            tabTitle = "Tab #3";
            break;
        default:
            tabTitle = "Default Tab Title";
            break;
    }
    return tabTitle;
}

您可以通过调用添加到Bundle的{​​{1}}上的setArguments(Bundle args),使用MyFragments传递标题和内容参数,从而使其更具动态性}。在ViewPager MyFragment中,您可以根据传入的内容onCreateView()参数设置内容。然后在String中,您可以在MyFragmentPagerAdapter处获得对Fragment的引用,并直接从position获取标题。