2012-01-06 60 views
4

私は以下の方法でアクティビティクラスをオーバーライドしています。拡張アクティビティのタイトルがカスタムスタイルで表示されない

public class MyCustomActivity extends Activity { 
... 
... 

} 

public class MyActivity extends MyCustomActivity { 
... 
... 

} 

マニフェストのアクティビティ宣言は次のとおりです。

<activity 
    android:name=".MyCustomActivity" 
    android:label="@string/app_name" > 
</activity> 

<activity 
    android:name=".MyActivity" 
    android:label = "ChildActivity"> 

    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

私の問題はandroid:label="ChildActivity"でマニフェストに定義されたアクティビティのタイトルがカスタムスタイルで表示されない場合、です。すべてのアクティビティでsetTitle(charSeq);と呼ぶことなく表示させるにはどうすればいいですか?

編集:私は言及するのを忘れ

一つのこと(恐ろしいことは)私は方法を以下にカスタムスタイルを使用していますということです。

<application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/CustomTheme" > 
... 
... 
</application> 

編集(@ Mudassirの回答後): 下記のように私が使用していたカスタムタイトルバーのレイアウトがあります。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="50dip" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:gravity="left" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/imageViewIcon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/vector_arts" 
      android:layout_marginLeft="-15dp" /> 

     <TextView 
      android:id="@+id/textTitleBar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 
</RelativeLayout> 
+0

ラベルに「ChildActivity」が表示されますか? yesの場合は、MyActivityのアクティビティタグからlabel属性を削除します。 –

+0

あなたは両方のアクティビティで同じタイトルを取得していますか? – kosa

+0

私はタイトルとして何も得ていませんか?私はマニフェストファイルに 'android:label'属性を設定したときに、そのアクティビティのタイトルは' setTitle() 'メソッドを呼び出さずに設定しなければなりません。 – Khan

答えて

2

私はあなたの質問を理解したので、あなたはテキストの表示(カスタムスタイル)を使ってタイトルテキストを表示しています。したがって、カスタムタイトルバー(テキストビュー)のデフォルトのタイトルテキスト(android:labelのマニフェストで定義されたもの)を表示するには、親(MyCustomActivity)のメソッドsetTitleを次のようにオーバーライドする必要があります。

@Override 
public void setTitle(CharSequence titleText) { 

    // Assuming you text view's name is titleTextView in the style XML file 
    TextView customTitle = (TextView) findViewById(R.id.titleTextView); 
    customTitle.setText(titleText); 
} 

このメソッドを次のように同じクラスのonCreate()から呼び出します。

setTitle(getTitle());

これは、マニフェストファイルで定義されたアクティビティ・ラベルを取得し、テキストビュー(ここではcustomTitle)で、カスタムのタイトルバー上に表示される方法setTitle()に渡します。この方法は、テキスト・ビューを使用してタイトル・テキストを表示する場合にのみ機能します。

+0

ありがとうございます。私が望むもの。私は使用しているカスタムスタイルについて言及するのを忘れていました。もう一度ありがとう。 – Khan

+0

あなたの質問を更新して、スタイルの詳細を含めてください。 – Mudassir

1

あなたがタイトルとしてChildActivity設定したMyActivityを起動しています。 MyActivityは子クラスのMyCustomActivityです。子クラスのタイトルを設定している間に、それが前面に来ました。あなたが見ている活動は、実際には親活動ではない子活動です。だから、ChildActivityのタイトルはあなたに

おかげ スニル・クマールSahoo

+0

更新された質問をご覧ください。 – Khan

2

あなたは活動のタイトルにマニフェストファイルに設定した同じタイトルを取得するが示されています。 あなたはこのように行う場合:

<activity android:name=".MyActivity" 
    android:label="ChildActivity" 
      > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".TestingMyAcivity"></activity> 

public class TestingMyAcivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

}

public class MyActivity extends TestingMyAcivity { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.main_); 
} 

}

あなたはmain_.xmlファイルにタイトル "ChildActivity" とレイアウトを取得します。

+0

更新された質問をご覧ください。 – Khan

関連する問題