我正在尝试创建一个应用程序来跟踪总计并通过表中包含的TextEdit显示它们。我想有几个标签来跟踪不同的表格,因此不同的总计。但是,当应用程序在模拟器上启动时,它会立即停止工作并崩溃。有谁能告诉我出了什么问题?
Android代码:
public class CounterCounterActivity extends TabActivity implements OnClickListener {
/** Called when the activity is first created. */
TextView YourLife, OppLife;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost=(TabHost)findViewById(R.id.tabHost);
tabHost.setup();
TabSpec spec1=tabHost.newTabSpec("Tab 1");
spec1.setContent(R.id.tab1);
spec1.setIndicator("Life");
TabSpec spec2=tabHost.newTabSpec("Tab 2");
spec2.setIndicator("+/-");
spec2.setContent(R.id.tab2);
TabSpec spec3=tabHost.newTabSpec("Tab 3");
spec3.setIndicator("Poison");
spec3.setContent(R.id.tab3);
tabHost.addTab(spec1);
tabHost.addTab(spec2);
tabHost.addTab(spec3);
tabHost.getTabWidget().getChildAt(0).getLayoutParams().height =50;
tabHost.getTabWidget().getChildAt(1).getLayoutParams().height =50;
tabHost.getTabWidget().getChildAt(2).getLayoutParams().height =50;
((Button) findViewById(R.id.button1)).setOnClickListener(this);
((Button) findViewById(R.id.button2)).setOnClickListener(this);
((Button) findViewById(R.id.button3)).setOnClickListener(this);
((Button) findViewById(R.id.button4)).setOnClickListener(this);
((Button) findViewById(R.id.button5)).setOnClickListener(this);
((Button) findViewById(R.id.button6)).setOnClickListener(this);
((Button) findViewById(R.id.button7)).setOnClickListener(this);
((Button) findViewById(R.id.button8)).setOnClickListener(this);
YourLife=(TextView)findViewById(R.id.txt2);
OppLife=(TextView)findViewById(R.id.txt1);
}
public void onClick(View view) {
// TODO Auto-generated method stub
@SuppressWarnings("unused")
Intent intent = new Intent();
int LY=20;
int LO=20;
int sel=0;
while (LY>0 && LO>0)
{
sel=0;
if (view.getId()==R.id.button1)
{
sel=1;
}
if (view.getId()==R.id.button3)
{
sel=2;
}
if (view.getId()==R.id.button4)
{
sel=3;
}
if (view.getId()==R.id.button8)
{
sel=4;
}
if (view.getId()==R.id.button5)
{
sel=5;
}if (view.getId()==R.id.button2)
{
sel=6;
}if (view.getId()==R.id.button6)
{
sel=7;
}if (view.getId()==R.id.button7)
{
sel=8;
}
switch (sel)
{
case 1:
{
LO=LO-1;
OppLife.setText(LO);
}
case 2:
{
LO=LO-5;
OppLife.setText(LO);
}
case 3:
{
LO=LO+1;
OppLife.setText(LO);
}
case 4:
{
LO=LO+5;
OppLife.setText(LO+"");
}
case 5:
{
LY=LY-1;
OppLife.setText(LY+"");
}
case 6:
{
LY=LY-5;
OppLife.setText(LY+"");
}
case 7:
{
LY=LY+1;
OppLife.setText(LY+"");
}
case 8:
{
LY=LY+5;
OppLife.setText(LY+"");
}
}
}
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<TabHost android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tabHost"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TabWidget
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/tabs"
/>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabcontent"
>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="*"
android:stretchColumns="*"
android:paddingTop="60px">
<TableRow >
<TextView
android:layout_width="fill_parent"
android:layout_height="100px"
android:text="You"
android:id="@+id/txt4"
/>
<TextView
android:id="@+id/txt4"
android:layout_width="fill_parent"
android:layout_height="100px"
android:text="Opponent" />
</TableRow>
<TableRow >
<TextView
android:layout_width="fill_parent"
android:layout_height="200px"
android:text="20"
android:id="@+id/txt1"
android:layout_weight="1"
android:textSize="100dp"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="200px"
android:text="20"
android:id="@+id/txt2"
android:layout_weight="1"
android:textSize="100dp"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="You -1"
android:layout_weight="1" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opp -1"
android:layout_weight="1"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="You -5" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="Opp -5" />
</TableRow>
<TableRow >
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="You +1" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opp +1" />
</TableRow>
<TableRow >
<Button
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="You +5" />
<Button
android:id="@+id/button8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opp +5" />
</TableRow>
</TableLayout>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tab2"
android:shrinkColumns="*"
android:stretchColumns="*"
android:paddingTop="60px"
>
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="100px"
android:text="This is tab 2"
android:id="@+id/txt2"
/>
</TableRow>
</TableLayout>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tab3"
android:shrinkColumns="*"
android:stretchColumns="*"
android:paddingTop="60px"
>
<TableRow>
<TextView
android:layout_width="fill_parent"
android:layout_height="100px"
android:text="This is tab 3"
android:id="@+id/txt3"
/>
</TableRow>
</TableLayout>
</FrameLayout>
LogCat Entrys;
09-09 12:48:16.964: D/AndroidRuntime(331): Shutting down VM
09-09 12:48:16.964: W/dalvikvm(331): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-09 12:48:16.985: E/AndroidRuntime(331): FATAL EXCEPTION: main
09-09 12:48:16.985: E/AndroidRuntime(331): java.lang.RuntimeException: Unable to start activity ComponentInfo{magic.gathering/magic.gathering.CounterCounterActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.os.Handler.dispatchMessage(Handler.java:99)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.os.Looper.loop(Looper.java:123)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-09 12:48:16.985: E/AndroidRuntime(331): at java.lang.reflect.Method.invokeNative(Native Method)
09-09 12:48:16.985: E/AndroidRuntime(331): at java.lang.reflect.Method.invoke(Method.java:507)
09-09 12:48:16.985: E/AndroidRuntime(331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-09 12:48:16.985: E/AndroidRuntime(331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-09 12:48:16.985: E/AndroidRuntime(331): at dalvik.system.NativeStart.main(Native Method)
09-09 12:48:16.985: E/AndroidRuntime(331): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.TabActivity.onContentChanged(TabActivity.java:105)
09-09 12:48:16.985: E/AndroidRuntime(331): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.Activity.setContentView(Activity.java:1657)
09-09 12:48:16.985: E/AndroidRuntime(331): at magic.gathering.CounterCounterActivity.onCreate(CounterCounterActivity.java:19)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-09 12:48:16.985: E/AndroidRuntime(331): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
任何帮助都将不胜感激。
答案 0 :(得分:2)
12:48:16.985:E / AndroidRuntime(331):引起: java.lang.RuntimeException:您的内容必须有一个标识为TabHost的标签 属性是'android.R.id.tabhost'
更换
android:id="@+id/tabHost"
通过
android:id="@android:id/tabHost"
应该有用。
答案 1 :(得分:0)
由于您要在活动中扩展TabActivity,因此需要更改id
的 TabHost
在您的XML中。
<TabHost android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabHost"
xmlns:android="http://schemas.android.com/apk/res/android"
>