gpt4 book ai didi

android - 为什么尝试在 android 中设置 tabspec 的内容时出现错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:39 25 4
gpt4 key购买 nike

我有一个使用选项卡的 android Activity 。

public class UnitActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.unit_view);

TabHost tabHost = getTabHost();
TabSpec spec;

spec = tabHost.newTabSpec("controls");
spec.setIndicator("Control");
spec.setContent(R.layout.unit_control);
tabHost.addTab(spec);

spec = tabHost.newTabSpec("data");
spec.setIndicator("Data");
spec.setContent(R.layout.unit_data);
tabHost.addTab(spec);
}
}

但是,当我运行该程序时,它崩溃并出现错误:“无法创建选项卡内容,因为找不到 ID 为 2130903042 的 View ”。我不明白是什么问题,因为 R.layout.unit_data 引用了我的资源目录中的布局文件 (res/layout/unit_data.xml)

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:stretchColumns="*"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Spinner android:id="@+id/unit_num"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/choose_unit"/>
<TableRow android:padding="2dp">
<TextView
android:gravity="right"
android:padding="5dp"
android:text="@string/Power"/>
<TextView android:id="@+id/unit_power"
android:layout_span="3"
android:gravity="center"
android:padding="5dp"
android:background="@android:color/white"
android:textColor="@android:color/black"
android:text="AUTO"/>
</TableRow>
...
</TableLayout>
</ScrollView>

据我所知,unit_data.xml 格式正确,我什至在另一个 Activity 中成功引用了它

class UnitData extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.unit_data);
Toast.makeText(this, "Hi from UnitData.onCreate", 5);
}
}

它不会给出错误并且可以很好地呈现布局。

这是怎么回事?为什么在创建选项卡时不能引用此布局?

最佳答案

同时 Activity.setContentView获取布局的 ID,TabSpec.setContent取一个 View 的 id。这意味着您需要传递一个看起来像 R.id.something 而不是 R.layout.something 的 id。

要解决您的特定问题,请为布局中的顶级 View 提供一个 View ID:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/unit_data"> <!-- NOTE THE CHANGE -->
...
</ScrollView>

并更新您的来源:

public class UnitActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.unit_view);

TabHost tabHost = getTabHost();
TabSpec spec;

spec = tabHost.newTabSpec("controls");
spec.setIndicator("Control");
spec.setContent(R.id.unit_control); // NOTE THE CHANGE
tabHost.addTab(spec);

spec = tabHost.newTabSpec("data");
spec.setIndicator("Data");
spec.setContent(R.id.unit_data); // NOTE THE CHANGE
tabHost.addTab(spec);
}
}

有关详细信息,请参阅 ApiDemos 中的选项卡示例:

关于android - 为什么尝试在 android 中设置 tabspec 的内容时出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com