我是新來的android和嘗試移植一個iOS應用程序。 不幸的是我有一些麻煩讓我的基礎設置工作。Android的 - TabHost/TabWidget
我試圖執行一個類似的導航本教程: tutorial
它是一個包含若干選項卡 而是作爲教程或多或少簡單TabHost使用
tabHost.addTab(tabHost.newTabSpec("settings").setIndicator("settings").setContent(R.id.tab1));
和什麼工作我想要初始我的選項卡類似這樣:
tabHost.addTab(tabHost.newTabSpec("settings").setIndicator("settings").setContent(new Intent(this, SettingsActivity.class)));
不幸的是當我點擊'設置 - 選項卡'時,該應用程序崩潰。
這是到目前爲止我的代碼:
MainActivity:
package xxx;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
public class MainActivity extends Activity implements OnTabChangeListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initTabs();
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void initTabs()
{
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setup();
tabHost.addTab(tabHost.newTabSpec("Übersicht").setIndicator("Übersicht").setContent(R.id.tab1)); // <- is working fine
tabHost.addTab(tabHost.newTabSpec("Einstellungen").setIndicator("Einstellungen").setContent(new Intent(this, SettingsActivity.class))); <- crash
tabHost.setOnTabChangedListener(this);
tabHost.setCurrentTab(0);
}
@Override
public void onTabChanged(String tabId)
{
// TODO Auto-generated method stub
}
}
activity_main.xml中:
<RelativeLayout xmlns:android=
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/tab4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</RelativeLayout>
SettingsActivity:
package xxx;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SettingsActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("This is tab 2");
setContentView(tv);
}
}
錯誤消息從logcat的:
10-15 03:52:22.711:W/dalvikvm(889):threadid = 1:線程退出 未捕獲異常(group = 0x41465700)10-15 03:52:22.851: E/AndroidRuntime(889)致命例外:main 10-15 03:52:22.851: E/AndroidRuntime(889):java.lang.IllegalStateException:您忘記了 來調用'public void setup(LocalActivityManager activityGroup)'嗎? 10-15 03:52:22.851:E/AndroidRuntime(889):at android.widget.TabHost $ IntentContentStrategy.getContentView(TabHost.java:747) 10-15 03:52:22.851:E/AndroidRuntime(889) ):at android.widget.TabHost.setCurrentTab(TabHost.java:413)10-15 03:52:22.851:E/AndroidRuntime(889):at android.widget.TabHost $ 2.onTabSelectionChanged(TabHost.java: 154)10-15 03:52:22.851:E/AndroidRuntime(889):at android.widget.TabWidget $ TabClickListener.onClick(TabWidget.java:546) 10-15 03:52:22.851:E/AndroidRuntime (889):at android.view.View.performClick(View.java:4240)10-15 03:52:22.851: E/AndroidRuntime(889):at android.view.View $ Perform Click.run(View.java:17721)10-15 03:52:22.851:E/AndroidRuntime(889):at android.os.Handler.handleCallback(Handler.java:730)10-15 03:52 :22.851:E/AndroidRuntime(889):at android.os.Handler.dispatchMessage(Handler.java:92)10-15 03:52:22.851:E/AndroidRuntime(889):at android.os.Looper .loop(Looper.java:137)10-15 03:52:22.851: E/AndroidRuntime(889):at android.app.ActivityThread.main(ActivityThread.java:5103)10-15 03:52: 22.851:E/AndroidRuntime(889):at java.lang.reflect.Method.invokeNative(Native Method)10-15 03:52:22.851:E/AndroidRuntime(889):at java.lang.reflect.Method .invoke(Method.java:525)10-15 03: 52:22.851: E/AndroidRuntime(889):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。java:737) 10-15 03:52:22.851:E/AndroidRuntime(889):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)10-15 03:52:22.851 :E/AndroidRuntime(889):在 dalvik.system.NativeStart.main(本機方法)
我認爲這個問題是,我的MainActivity不從的ActivityGroup和/或我不使用擴展LocalActivityManager。問題是,兩者都被棄用。爲了在不使用已棄用的方法和類的情況下工作,我需要做些什麼?
對不起,這可能很簡單的問題,但我沒有發現任何通過谷歌,我是新的android編程:)。
第一個解決方案來在任何人的頭腦,有妳'AndroidManifest'定義此設置的活動? –
哦,我忘了發佈我的清單,但是,是的,它在清單 – user1567896