2011-01-22 4 views
2

私は1つの活動と3つのintetフィルター、異なるラベルを持つそれぞれに設定され、(以下AndroidManifiest.xml)異なる活性タイトル

<activity android:name=".activities.RecordActivity"> 
     <intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="com.keitai.enigma.OPEN_RECORD" /> 
     </intent-filter> 
     <intent-filter android:label="@string/newRecord"> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="com.keitai.enigma.NEW_RECORD" /> 
     </intent-filter> 
     <intent-filter android:label="@string/editRecord"> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="com.keitai.enigma.EDIT_RECORD" /> 
     </intent-filter> 
    </activity> 

を持っていますが、アクティビティのタイトルが意図して設定されたラベルに変更されていませんフィルタ:(活動は、常にアプリケーションのラベルが含まれています。私は間違ってdonigてる何

答えて

1

タイトルを明示的に設定するコードはありませんか?

OPEN_RECORDのインテントは毎回トリガーされていませんか?

すべてに個別のラベル(アプリケーション、アクティビティ、各インテントフィルタ)があり、何が起こっているかを確認してデバッグを試みましたか?

私はあなたに何が起こると予想されるかは、ドキュメントが何が起こるべきかということに同意します。しかし、デフォルトの<application>というラベルが関係なく使用されているようです。私は上記のアイデアの1つが役に立たないのであれば、私はアイデアがありません。私は後でそれが私のために起こるかどうかを私のシステム上で自分自身で試してみるかもしれません。


http://developer.android.com/guide/topics/manifest/intent-filter-element.html#label

アンドロイド:親コンポーネントのラベル

ユーザーが読み取り可能なラベル。 このラベルは、親コンポーネントによって設定されたラベルではなく、そのコンポーネントがフィルタに記述された機能を持つとしてユーザに提示されたときに使用されます。

...

デフォルト値は、親コンポーネントによって設定されたラベルです。親がラベルを指定しない場合、デフォルトは要素のlabel属性で設定されたラベルです。


http://developer.android.com/guide/topics/manifest/manifest-intro.html#iconlabel

アイコンとすべての場合には

...

、となっ含む要素に設定されたアイコンとラベルをラベルデフォルトのアイコンとラベルの設定コンテナのすべての下位要素のgsです。したがって、要素に設定されたアイコンとラベルは、アプリケーションの各コンポーネントのデフォルトのアイコンとラベルです。同様に、コンポーネントのアイコンとラベルセット(たとえば、エレメント)は、コンポーネントの各エレメントのデフォルト設定です。 エレメントがラベルを設定するが、アクティビティーとそのインテント・フィルターがラベルを設定しない場合、アプリケーション・ラベルは、アクティビティー・フィルターとインテント・フィルターの両方のラベルとして扱われます。

...

+1

私はOPEN_RECORDが毎回トリガーされないことを確信しています。 NEW_RECORDまたはEDIT_RECORDがトリガーされたとき、編集モードのレイアウトが設定されています(表示モードのレイアウトとは異なります)。 タイトル変更をコードに移動して動作します。 –

+0

@ValdisZobēla - そうではありません私はメモ帳のチュートリアルアプリを使いました(便利なのは、ランチャーの意図だけです)。私はすべてにラベルを貼り、何が起こるか見る。興味深いことに、インテントフィルターのラベルは、Laucherアプリのアプリのラベルとして表示されていました。しかし、アプリケーションのメインページは、意図がランチャーから呼び出されたときにインテントフィルターのラベルをタイトルとして使用していませんでした。メインページではなく、アクティビティラベルが表示されました。 –

0

あなたが活動、アプリケーションやサービス(ほんの一例)との間で情報を渡すために、通常はインテントを使用しています。 私の理解では、ありますあなたのタイトルをアクティビティを変更したいと思っています。ボタンが押された場合。 したがって、あなたのアクティビティに簡単に設定する必要があります
this.setTitle("YOUR ACTIVITY NAME");
ボタンをクリックした後にこれを実行する場合は、対応するボタンのリスナに配置します。

0

実際、あなたの例では、別のアクティビティを使用することをお勧めします(というタイトルで表示されます)。 Androidでは、通常、1つのアクティビティが1つのユースケースに対応しています。つまり、OPEN_RECORDでは、ユーザーがレコードを選択でき、EDIT_RECORDでレコードを編集できるダイアログが表示される場合、通常は2つの異なるアクティビティがあります。

例としてnotepad tutorialをご覧ください。