小编twa*_*way的帖子

以编程方式访问Android中片段XML中定义的视图

我正在制作一个具有基于标签的导航的Android 3应用.作为Android的新手,我搜索了标签教程并找到了一些不同的方法,其中基于Fragments + ActionBar的实现似乎是最好的.我按照这些教程

http://www.abelski.com/courses/android3ui/actionbar.pdf(最后几张幻灯片)和 http://www.youtube.com/watch?v=gMu8XhxUBl8(视频格式相同课程)

...并且到达了标签显示的位置,我可以在它们之间切换,它们内部的简单TextViews显示正常.

现在,当我希望其中一个选项卡具有在片段的XML文件中定义的微调器窗口小部件并使用在strings.xml文件中定义的项目填充它时,会出现问题.当我尝试访问与微调getViewById()的onCreate()方法,我总是得到一个空值作为结果.

据我了解,为了解决这个问题,我需要以某种方式声明片段的XML(类似于主布局已经使用setContentView(R.layout.main)完成),以便getViewById()知道在哪里寻找微调器(Eclipse的autocomplete虽然已找到它.但是,我完全不知道如何做到这一点,因为没有一个教程解决了你想在代码中修改基于XML的Fragments内容的场景.

main.xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">


<LinearLayout android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:id="@+id/fragment_placeholder"></LinearLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

tab1_fragment.xml是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical" 
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent">

    <Spinner android:id="@+id/spinner1" 
             android:layout_width="wrap_content" 
             android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

和onCreate方法如下:

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

    ActionBar ab = getActionBar();
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.Tab newAuditTab = ab.newTab().setText(R.string.tabheader_new_audit);
    Fragment newAuditFrag = new FragmentTabNewAudit();
    newAuditTab.setTabListener(new TabListener(newAuditFrag));
    ab.addTab(newAuditTab);

    //and the same for other tabs

    Spinner spinner …
Run Code Online (Sandbox Code Playgroud)

tabs android android-layout android-fragments android-actionbar

6
推荐指数
1
解决办法
7522
查看次数