在我的tablayout示例中,我创建了3个选项卡,因为通常我为每个选项卡设置3个活动.我可以将图像设置为活动的标题栏,这会将意图添加到每个选项卡.因此,标题栏中的图像在所有3个选项卡中都可见.我的要求是为每个活动的标题栏设置不同的图像.我按照这个将图像设置为标题栏.但是,当我要对每个活动执行相同的操作时,android.util.AndroidRuntimeException: You cannot combine custom titles with other title features会终止此错误和应用程序.
的manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.aptitsolution.tablayout"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/MyTheme">
<activity android:name=".TabLayoutDemo"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="AlbumsActivity"></activity>
Run Code Online (Sandbox Code Playgroud)
TabLayoutDemo.java
public class TabLayoutDemo extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, ArtistsActivity.class);
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
tabHost.addTab(spec);
....
....
Run Code Online (Sandbox Code Playgroud)
ArtistsActivity.java
public class ArtistsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);//i am getting the error here
setContentView(R.layout.artists);
setFeatureDrawableResource(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
}
Run Code Online (Sandbox Code Playgroud)
}
my_title.xml
<RelativeLayout android:id="@+id/header"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="fill_parent">
<ImageView android:src="@drawable/nowplaying"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/title" android:layout_width="wrap_content"
android:text="New Title" android:layout_height="wrap_content"/></RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
谢谢
venu
您好,您不能使用Custom Title嵌套的活动中的功能TabHost.
也就是说,如果您要求活动A和活动B中的自定义标题嵌套在TabActivity中, Android将抛出您在上面提到的异常.
解决此问题的方法是让TabActivity请求自定义标题.并从活动A和活动B内部更改TabActivity的自定义标题的内容.
我可以给你的另一个提示是覆盖onResume()活动A和活动B 的调用以更改TabActivity自定义标题.
编辑:示例代码
对于您的标签活动
public class TabLayoutDemo extends TabActivity {
//CREATING A PUBLIC STATIC VARIABLE
public static TabLayoutDemoInstance myTabLayoutDemo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
TabLayoutDemo.TabLayoutDemoInstance=this;//STORING
//COMMENTING SET FEATURE IN TAB
//getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
//REST CODE REMAINS SAME
Run Code Online (Sandbox Code Playgroud)
现在为你的活动A和B.
public class ActivityA extends Activity{
//LOST MORE CODE ABOVE
@Override
protected void onResume() {
super.onResume();
//SET FEATURE FROM INSIDE ACTIVITY
TabLayoutDemo.TabLayoutDemoInstance.getWindow().
setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
}
Run Code Online (Sandbox Code Playgroud)
}
复制上面为B指定的ActivityA的简历.
提示:您可以使用此更改从每个活动更改标题布局.
我希望有所帮助.
| 归档时间: |
|
| 查看次数: |
15120 次 |
| 最近记录: |