这是我的布局文件:
<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tabHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/panel_start">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_weight="1">
<RelativeLayout
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<RelativeLayout android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/player"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<RelativeLayout android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<!-- In this tab I don't want to specify
a layout, but call an intent for an
other activity to start-->
</RelativeLayout>
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginBottom="-4dp"/>
</LinearLayout>
这是我上面布局的代码:
public class MultimediaArticle extends YouTubeFailureRecoveryActivity implements
YouTubePlayer.OnFullscreenListener {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.multimedia);
viewPager = (ViewPager) findViewById(R.id.pager);
playerView = (YouTubePlayerView) findViewById(R.id.player);
doLayout();
Intent i = getIntent();
int position = i.getIntExtra("position", 0);
adapter = new FullScreenImageAdapter(this,monument.getLocalPhotosUrl());
viewPager.setAdapter(adapter);
TabHost tabs = (TabHost)findViewById(R.id.tabHost);
tabs.setup();
TabHost.TabSpec spec1 = tabs.newTabSpec("tag1");
spec1.setContent(R.id.tab1);
spec1.setIndicator("Photos",getResources().getDrawable(R.drawable.photos_tab_selector));
tabs.addTab(spec1);
TabHost.TabSpec spec2 = tabs.newTabSpec("tag2");
spec2.setContent(R.id.tab2);
spec2.setIndicator("Videos");
tabs.addTab(spec2);
TabHost.TabSpec spec3 = tabs.newTabSpec("tag3");
spec3.setIndicator("360° Videos", getResources().getDrawable(R.drawable.photos_t_tab_selector));
Intent intent = new Intent(MyApplication.getAppContext(), ThreeSixtyPhotosActivity.class);
intent.putExtra("monument", monument);
spec3.setContent(intent);
tabs.addTab(spec3);
}
但我得到了这个例外:
java.lang.IllegalStateException:您是否忘记调用'public void setup(LocalActivityManager activityGroup)'?
为了克服这个问题,我该怎么办?我无法扩展TabActivity或ActivityGroup 因为我已经在扩展YouTubeFailureRecoveryActivity。非常感谢你的帮助,谢谢你的时间
答案 0 :(得分:0)
通常有解决方法,但是: 如果必须扩展两个类,首先,构建一个CustomExtendingActivity作为基本活动,然后使用CusonExtendingExtendingActivity类扩展CustomExtendingActivity。
考虑这个示例场景:
您希望在Java中扩展RoboActivity和ActionbarSherlock活动。
与ActionBarSherlock一起使用的RoboGuice类
RoboGuice和ActionBarSherlock都需要活动和片段的自定义基类,并且由于Java不允许钻石继承,因此该项目提供了自定义RoboGuice类,可以从ActionBarSherlock扩展相应的类。
您可以在此处浏览完整代码: