arn*_*321 0 android android-tabs
我试图在同一个活动中制作一个标签界面.这是我的main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<AnalogClock android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<Button android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="A semi-random button"
/>
</FrameLayout>
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)
dummy.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
和我的活动:
public class LActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabs=(TabHost)findViewById(R.id.tabhost);
tabs.setup();
tabs.addTab(tabs.newTabSpec("tag1").setIndicator("1").setContent(R.id.tab1));
tabs.addTab(tabs.newTabSpec("tag2").setIndicator("2").setContent(R.id.tab2));
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但是如果你R.id.tab2改为R.layout.dummy或者R.id.ratingBar1,它会抛出一个nullpointerexception.
我打算在选项卡中显示dummy.xml.
R.id.tab2工作原理和R.layout.dummy不工作的原因R.id.tab2是Activity内容视图的一部分,因为它是在设置的布局中定义的setContentView.
你不能用一个布局-ID,其中一个view-id的预期,而这就是为什么R.layout.dummy不起作用.并且你不能指望它在使用时不起作用,R.id.ratingBar1因为它不是Activity内容的一部分,活动将如何知道从哪里获得该视图?请记住,使用id可以有几种不同的布局ratingBar1.
你需要做的是将你的虚拟布局放在里面@android:id/tabcontent.你只需要一个<include>元素就可以做到这一点.否则,您需要自己夸大布局并使用结果View作为参数setContent.
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |